Você pode experimentar o MarcoPolo ou um dos utilitários semelhantes listados em seu site. O Location Changer parece promissor se você for um minimalista.
Existe alguma maneira de executar um script quando uma interface de rede aparece no Mac OS X?
Eu tentei colocar um script chamado ip-up em / etc / ppp, mas ele não parece ser disparado quando eu me desconecto e reconecto a uma rede sem fio.
Eu prefiro não ter que executar um cron job 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?
Você pode experimentar o MarcoPolo ou um dos utilitários semelhantes listados em seu site. O Location Changer parece promissor se você for um minimalista.
Um agente launchd assistindo /etc/resolv.conf
e dois arquivos .plist relacionados à rede em /Library/Preferences/SystemConfiguration/
parecem funcionar para mim (no Mac OS X 10.8.4):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ifup.ddns</string>
<key>LowPriorityIO</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/Shared/bin/ddns-update.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/etc/resolv.conf</string>
<string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
<string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Anteriormente, eu só usava o /etc/resolv.conf, mas havia casos em que isso não era suficiente.
Você deve considerar o uso do crankd , que permite precisamente que você execute scripts em resposta a muitos eventos do sistema, como a rede mudanças, atividade do sistema de arquivos, inicialização de aplicativos, etc.
Como não encontrei nenhuma documentação sensata, também escrevi uma pequena postagem no blog sobre começando a usar o crankd .
O ControlPlane é uma porta direta do MarcoPolo e, de fato, grande parte da configuração do MarcoPolo ainda funciona com o ControlPlane, simplesmente melhor! O ControlPlane suporta Macs baseados em Intel de 32 e 64 bits que executam o Snow Leopard e superiores.
Comece com launchd . Você pode ser capaz de usar uma funcionalidade semelhante.
Isso parece funcionar no bash:
(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
scutil | \
awk '/notification/ {system("echo change")}'
substitua echo change
pelo seu comando, tendo em mente que, se você precisar citar qualquer coisa em seu comando, precisará usar '\''
:
(echo -e "n.add State:/Network/Global/IPv4\nn.watch" & cat) | \
scutil | \
awk '/notification/ {system("echo '\''&'\''")}'