Não incorporado; Esse tipo de coisa geralmente é manipulado pelo launchd no OS X, mas os eventos de up / down da rede não estão em sua lista de acionadores. Felizmente, o PyMacAdmin inclui um programa, o crankd, que fornece esse recurso. Aqui é um exemplo de usar o crankd para fazer algo semelhante (embora ele esteja usando para iniciar um módulo Python ao invés de um shell script, então os detalhes são um pouco diferentes). Eu não tentei isso, mas parece que você só precisa criar um arquivo crankd plist algo assim:
<?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>SystemConfiguration</key>
<dict>
<key>State:/Network/Global/IPv4</key>
<dict>
<key>command</key>
<string>/usr/local/libexec/networkchangescript</string>
</dict>
</dict>
</dict>
</plist>
... então escreva / usr / local / libexec / networkchangescript para detectar se a rede está ativa (AIUI será ativada para qualquer alteração, seja para cima, para baixo ou para os lados) e configure os túneis, se apropriado. Finalmente, crie um pld launchd para rodar o crankd (veja o exemplo que eu coloquei para detalhes).