Executa um script automaticamente quando estou conectado à internet no Mac [duplicado]

1

Eu configuro túneis ssh para que eu possa acessar vários computadores no trabalho através do nosso gateway. O problema é que eu não gosto de ter que configurá-los sempre que ligo meu computador ou conecto / desconecto a internet, então espero que haja uma maneira de executar automaticamente um shell script para configurar os túneis sempre que me conecto à internet. Eu tenho algo semelhante configuração na minha estação de trabalho no escritório que está executando o Ubuntu e usa o /etc/network/if-up.d e if-down.d. Existe um equivalente no Mac?

    
por thetaiko 02.12.2010 / 15:46

2 respostas

2

Eu acho que ferramentas sensíveis ao contexto, como MarcoPolo , podem fazer o truque, certamente se você usar algum script de shell para configurar os túneis:

Flexible rule-based fuzzy matching on:

  • [..]
  • Assigned IP addresses
  • Active Network Links
  • Visible WiFi networks

Actions triggered by changing context (either entering or leaving), with an optional delay:

  • [..]
  • Mounting network shares (smb://, afp://, etc.)
  • Changing OS X network location
  • Quit an application
  • Running a shell script (or any other kind of script, via Platypus)
  • Establish or disconnect VPN
    
por 02.12.2010 / 18:35
3

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).

    
por 02.12.2010 / 17:54