Execute o script no OS X 10.6 na conexão de rede. (como /etc/network/if-up.d/)

15

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?

    
por Zxaos 20.10.2010 / 15:11

6 respostas

5

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.

    
por 20.10.2010 / 15:24
17

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.

    
por 02.08.2013 / 00:21
5

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 .

    
por 22.03.2011 / 20:19
3

ControlPlane: “Context Sensitive Computing”

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.

    
por 01.08.2014 / 21:11
2

Comece com launchd . Você pode ser capaz de usar uma funcionalidade semelhante.

    
por 20.10.2010 / 15:18
2

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 '\''&'\''")}'
    
por 22.01.2016 / 16:43