Wie erkennt man Netzwerkänderungen (Kabel ausstecken/einstecken)?

Ich habe an mehreren Stellen gelesen, dass sich der Ordner /Library/Preferences/SystemConfiguration"ändern" soll, falls ich ein Netzwerkkabel abziehe.

Jetzt habe ich ein MacBook Pro, also verwende ich einen USB3-Adapter, um ein Netzwerkkabel anzuschließen.

Tatsächlich ändert sich nichts , wenn ich es in diesem Ordner einstecke oder entferne. Ich sehe in den "Netzwerkeinstellungen" deutlich, dass die LAN-Verbindung hergestellt oder getrennt wird, wenn ich das Kabel ein- oder ausstecke.

Wo soll sich etwas ändern? Gibt es einen Ordner oder etwas anderes, das ich als Trigger für AppleScript verwenden kann, wenn ich das Netzwerkkabel einstecke/trenne?

Was genau versuchen Sie zu tun, wenn dies auftritt? Versuchen Sie, eine Fähigkeit zu skripten, um Ihr WLAN einzuschalten? Ich habe das in der Vergangenheit mit Bash geschrieben, sollte aber in AppleScript nicht schwer sein.
@ʀ2ᴅ2 Frage ist, WIE kann ich AppleScript starten, wenn das Netzwerkkabel (nicht) eingesteckt ist
Es gibt keine Datei, die geschrieben wird, wenn Sie eine Netzwerkschnittstelle hoch- oder herunterfahren. Dies ist ein Zustand, der von den Netzwerk-Kexts behandelt wird. Um dies in Aktion zu sehen, verwenden Sie Terminal und geben Sie ein sudo dmesg. Trennen Sie dann Ihr Netzwerk. sudo dmesgerneut, um zu sehen, um das Trennereignis zu sehen. Stecken Sie es wieder ein und sudo dmesgwieder, um die Verbindungsmeldung zu sehen. Was den programmgesteuerten Zugriff darauf betrifft, glaube ich nicht, dass AppleScript diese Fähigkeit hat.

Antworten (3)

Dieses Projekt in Github tut, wonach Sie suchen - schauen Sie dort hinein, um zu sehen, wie er es macht. https://github.com/paulbhart/toggleairport

Er beobachtet diese drei Dateien, um festzustellen, dass sich der Netzwerkstatus geändert hat:

  • /private/var/run/resolv.conf
  • /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
  • /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist

Der Zweck seines Projekts besteht darin, WiFi auszuschalten, wenn das LAN verbunden ist, und es wieder einzuschalten, wenn das LAN getrennt ist.

Speichern Sie dieses Skript als Anwendung und legen Sie fest, dass es beim Start ausgeführt wird. Es wird etwas Speicher verbrauchen, aber das Skript ist sehr leicht. Sie können noch mehr hinauszögern. Beachten Sie, dass diese Routine das Kabel für immer erkennt, also müssen Sie andere Bedingungen in Ihrem Skript festlegen, um das zu tun, was Sie brauchen, und aufhören, bis sich etwas ändert.


on run {input}
    repeat
        set input to do shell script "ifconfig -a" as text
        set status to offset of "status:" in input
        set the_starting_point to status + 0
        set the_ending_point to status + 13
        set isCableConnected to characters the_starting_point thru the_ending_point of input as string
        if isCableConnected is "status: active" then
            display dialog "Ethernet On"
        else
            display dialog "Cable Unplugged"
        end if
        delay 1
    end repeat
end run

Eine Endlosschleife im Hintergrund?
Jawohl. Sie brauchen etwas, um den Status des Kabels zu verfolgen.
Es sei denn, Sie entfernen die Wiederholung und verwenden eine Verknüpfung oder einen anderen Auslöser.

Vielleicht können Sie Ihr Skript mit einer Verknüpfung aktivieren, da Sie das Kabel sowieso bereits einstecken. Erstellen Sie einfach einen neuen Dienst für den Finder mit Automator, ziehen Sie eine Aktion „Applescript ausführen“ in den Workflow, platzieren Sie Ihren Code darin, speichern Sie ihn und legen Sie eine Verknüpfung unter „Einstellungen/Tastatur/Verknüpfungen/Dienste“ fest.

Ich möchte ein solches Skript ausführen, wenn das Netzwerkkabel (nicht) eingesteckt ist. Wie ich auf dieses Ereignis reagieren soll, ist meine Frage, nicht wie ich das Drehbuch schreiben soll