1 votes

Puis-je configurer dhclient pour qu'il exécute un script bash script après un renouvellement DHCP réussi ?

Je suis encore nouveau sous Ubuntu, et je viens d'installer Ubuntu-server 14.04.3 LTS. Je me suis inscrit pour un dns dynamique et j'ai choisi d'utiliser un bash script en mettant à jour mon adresse IP sur l'API REST exposée du site web du dns dynamique via une simple commande wget. J'envisage d'exécuter le bash script après un renouvellement de dhclient (DHCP), mais je ne sais pas comment configurer dhclient pour faire une telle chose.

Gracias,

2voto

mrosiak Points 161

J'ai trouvé une solution à mon problème. man dhclient indique qu'un script est invoqué par dhclient lorsqu'il obtient un bail. Pour en savoir plus man dhclient-script et le script lui-même décrit l'emplacement des script qui dhclient s'exécute en fonction de la phase du processus dhcp.

Les crochets sont situés dans /etc/dhcp/dhclient-enter-hooks.d y /etc/dhcp/dhclient-exit-hooks.d pour les répertoires avant et après dhclient l'exécution. Comme je souhaite exécuter un script après un renouvellement réussi, j'ai placé mon script à l'intérieur de la section ...-enter-hooks.d répertoire.

Voici le script, vérifiant les phases particulières qui signifient une nouvelle adresse ip dhcp avant d'exécuter le script dynamique dns :

case "$reason" in

    BOUND|RENEW|REBIND|REBOOT)
        sh /etc/network/rinker.sh
        ;;

esac

J'ai obtenu rinker.sh de http://www.changeip.com/accounts/downloads.php?action=displaycat&catid=4 qui n'est qu'un simple appel wget à l'URL de mise à jour du site web.

0voto

user2037557 Points 191

J'aimerais revenir sur la réponse de Poly Bug.

Lorsque vous appelez le script externe, j'ai constaté que SI vous utilisez le 'sh' ou le 'source' avant d'appeler le script, dhclient considérera que cela fait partie de son hook. Par conséquent, il vous donnera des erreurs comme celle-ci :
[[ : introuvable Si vous avez des instructions if / then dans le script que vous appelez, cela entraînera l'échec du script que vous aviez l'intention d'exécuter.

Au lieu de cela, supprimez le sh et exécutez votre script dhclient-exit-hook comme ceci :

#!/bin/bash
# dhclient is picky about how it runs sub-scripts.
# using this way allows divorces it from the hook itself so it runs independently of the hook
/SM/data-drive/sm_scripts/network/dhclient-resolv-set $0 $BASH_SOURCE $reason &

Ceci exécutera votre script appelé de manière asynchrone sans erreurs.

J'ai également créé une vidéo de suivi basée sur cet article :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X