Existe alguma maneira de executar um script quando uma interface de rede é exibida no Mac OS X?
Tentei colocar um script chamado ip-up em / etc / ppp, mas ele não parece disparar quando eu desconecto e reconecto a uma rede sem fio.
Prefiro não ter que executar um trabalho cron para verificar constantemente se o status da rede mudou. Em algumas distribuições Linux, você pode fazer isso colocando um script em /etc/network/if-up.d/. Existe algo semelhante para o Mac OS X?
Um agente launchd assistindo
/etc/resolv.conf
e dois arquivos .plist relacionados à rede abaixo/Library/Preferences/SystemConfiguration/
parecem funcionar para mim (no Mac OS X 10.8.4):Eu já havia usado apenas o /etc/resolv.conf, mas houve casos em que isso não foi suficiente.
fonte
<plist version="1.0">
tag de abertura está ausente. [1] [ apple.stackexchange.com/a/181127/56862]SystemConfiguration
arquivos? Se eu ligar / desconectar um cabo de rede, nada parece mudar nada/etc/resolv.conf
arquivo é excluído e lido quando o meu estado wifi muda, por isso não sei por que ele está sendo executado apenas na desconexão.Você deve considerar o uso do crankd , que permite executar scripts com precisão em resposta a muitos eventos do sistema, como alterações de rede, atividade do sistema de arquivos, inicialização de aplicativos etc.
Como não consegui encontrar nenhuma documentação sensata, também escrevi um pequeno post sobre como começar a usar o crankd .
fonte
Isso parece funcionar no bash:
substitua
echo change
por seu comando, lembrando que, se precisar citar algo em seu comando, será necessário usar'\''
:fonte
ControlPlane: “Computação sensível ao contexto”
O ControlPlane é uma porta direta do MarcoPolo e, de fato, grande parte da configuração do MarcoPolo ainda funciona com o ControlPlane, apenas melhor! O ControlPlane suporta Macs Intel de 32 e 64 bits com o Snow Leopard e superior.
fonte
Comece com o launchd. Você pode ter uma funcionalidade semelhante usando-o.
EDIT : 9 anos depois, talvez não. De acordo com esta entrada da Wikipedia :
Em 2014, com o OS X 10.10 e o iOS 8, a Apple mudou o código do launchd para o libxpc de código fechado
fonte