Führe ein Skript automatisch aus, wenn ich auf einem Mac mit dem Internet verbunden bin [duplizieren]

1

Mögliche Duplikate:
Führen Sie das Skript in OS X 10.6 über eine Netzwerkverbindung aus. (wie /etc/network/if-up.d/)

Ich habe ssh-Tunnel eingerichtet, damit ich über unser Gateway auf verschiedene Computer zugreifen kann, die gerade in Betrieb sind. Das Problem ist, dass ich diese nicht jedes Mal einrichten muss, wenn ich meinen Computer einschalte oder die Verbindung zum Internet herstelle / trenne. Ich hoffe, dass es eine Möglichkeit gibt, ein Shell-Skript zum Einrichten automatisch auszuführen die Tunnel, wann immer ich mich mit dem Internet verbinde. Ich habe auf meiner Workstation im Büro ein ähnliches Setup, auf dem Ubuntu ausgeführt wird und das /etc/network/if-up.d und if-down.d verwendet. Gibt es eine Entsprechung auf dem Mac?

thetaiko
quelle
Möglich Duplikat
Daniel Beck

Antworten:

2

Ich denke, kontextsensitive Tools wie Marco Polo Wenn Sie ein Shell-Skript verwenden, um die Tunnel einzurichten, können Sie dies mit Sicherheit tun:

Flexibles regelbasiertes Fuzzy-Matching für:

  • [..]
  • Zugewiesene IP-Adressen
  • Aktive Netzwerkverbindungen
  • Sichtbare WiFi-Netzwerke

Aktionen, die durch Ändern des Kontexts (entweder Betreten oder Verlassen) mit einer optionalen Verzögerung ausgelöst werden:

  • [..]
  • Einbinden von Netzwerkfreigaben (smb: //, afp: // usw.)
  • Ändern des OS X-Netzwerkverzeichnisses
  • Beenden Sie eine Anwendung
  • Ausführen eines Shell - Skripts (oder eines anderen Skripts) über Schnabeltier )
  • VPN einrichten oder trennen
Arjan
quelle
Genau das kann MarcoPolo und ich habe es in der Vergangenheit verwendet, um einen VPN-Tunnel aufzubauen, wenn ich mich mit einem bestimmten Netzwerk verbinde (wenn ich einen Computer von der Arbeit nach Hause und wieder zurück bringe). Sehr handliches Werkzeug.
Ian C.
Das sieht vielversprechend aus - ich muss ein paar Minuten damit herumspielen.
thetaiko
Genau das, wonach ich gesucht habe, danke.
thetaiko
3

Nicht eingebaut; So etwas wird normalerweise von launchd unter OS X erledigt, aber Netzwerk-Up / Down-Ereignisse sind nicht in der Liste der Auslöser enthalten. Glücklicherweise, PyMacAdmin Enthält das Programm Crankd, das diese Funktion bereitstellt. Hier ist ein Beispiel für die Verwendung von Crankd, um etwas Ähnliches zu tun (obwohl er es verwendet, um ein Python-Modul anstelle eines Shell-Skripts zu starten, sodass die Details etwas anders sind). Ich habe das noch nicht ausprobiert, aber es sieht so aus, als müssten Sie nur eine Crankd-Plist-Datei wie die folgende erstellen:

<?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>

... schreiben Sie dann / usr / local / libexec / networkchangescript, um festzustellen, ob das Netzwerk aktiv ist (AIUI wird bei Änderungen gestartet, ob aufwärts, abwärts oder seitwärts) und richten Sie gegebenenfalls Tunnel ein. Erstellen Sie schließlich eine launchd-Liste, um crankd auszuführen (siehe das Beispiel, das ich für Details verlinkt habe).

Gordon Davisson
quelle