Existe-t-il un moyen d'exécuter un script lorsqu'une interface réseau apparaît dans Mac OS X?
J'ai essayé de mettre un script nommé ip-up dans / etc / ppp mais il ne semble pas se déclencher lorsque je me déconnecte et me reconnecte à un réseau sans fil.
Je préfère ne pas avoir à exécuter une tâche cron pour vérifier en permanence si l'état du réseau a changé. Dans certaines distributions Linux, vous pouvez accomplir cela en plaçant un script dans /etc/network/if-up.d/. Existe-t-il quelque chose de similaire pour Mac OS X?
Un agent launchd regardant
/etc/resolv.conf
et deux fichiers .plist liés au réseau sous/Library/Preferences/SystemConfiguration/
semblent fonctionner pour moi (sous Mac OS X 10.8.4):J'avais auparavant utilisé uniquement /etc/resolv.conf, mais il y avait des cas où cela ne suffisait pas.
la source
<plist version="1.0">
balise d' ouverture est manquante. [1] [ apple.stackexchange.com/a/181127/56862]SystemConfiguration
fichiers? Si je branche / débranche un câble réseau, rien ne semble changer/etc/resolv.conf
fichier est supprimé et lu à nouveau lorsque mon état wifi change, donc je ne sais pas pourquoi il ne fonctionne que lors de la déconnexion.Vous devriez envisager d'utiliser crankd , qui vous permet précisément d'exécuter des scripts en réponse à de nombreux événements système tels que les changements de réseau, l'activité du système de fichiers, le lancement d'application, etc.
Comme je n'ai pu trouver aucune documentation raisonnable, j'ai également écrit un petit article de blog sur les premiers pas avec crankd .
la source
Cela semble fonctionner en bash:
remplacer
echo change
par votre commande, en gardant à l'esprit que si vous avez besoin de citer quelque chose dans votre commande, vous devrez utiliser'\''
:la source
ControlPlane: «Calcul sensible au contexte»
ControlPlane est un port direct de MarcoPolo et en fait, une grande partie de la configuration de MarcoPolo fonctionne toujours avec ControlPlane, juste mieux! ControlPlane prend en charge les Mac à processeur Intel 32 et 64 bits exécutant Snow Leopard et versions supérieures.
la source
Commencez par launchd. Vous pourriez être en mesure d'utiliser des fonctionnalités similaires.
EDIT : 9 ans plus tard, peut-être pas. Selon cette entrée Wikipedia :
En 2014, avec OS X 10.10 et iOS 8, Apple a déplacé le code de launchd vers la source fermée libxpc
la source