Woran erkenne ich, ob OS X über die Befehlszeile mit einem VPN-Netzwerk verbunden ist?

12

Woran erkenne ich, ob OS X über die Befehlszeile mit einem VPN-Netzwerk verbunden ist?

Durch die Ausführung ifconfigohne Argumente , wenn ich verbunden bin, sehe ich , dass es eine utun0Schnittstelle , die die VPN - Verbindung zu sein scheint. Wenn ich die Verbindung trenne, geht es weg.

Ich glaube, ich könnte so etwas verwenden, um nach dem String zu suchen utun0und die Vorkommen zu zählen:

ifconfig | grep -c utun0

Aber gibt es eine einfachere oder effektivere Möglichkeit, dies zu überprüfen? Wenn utun0es sich um ein Gerät oder sogar ein Pseudogerät handelt, sollte ich nicht in der Lage sein, zu überprüfen, ob es in etwa existiert:

if [ -a '/dev/utun0' ]

Leider sehe ich beim Verbinden und Trennen keine Änderungen in diesem Verzeichnis. Ich sehe sie nur /dev/tun0durch /dev/tun15und kann catsie auch nicht mit sudo...

Gibt es eine einfachere Möglichkeit, festzustellen, ob ich eine VPN-Verbindung habe?

cwd
quelle
Was für ein VPN? Das eingebaute, das Sie in den Systemeinstellungen konfigurieren ?
Daniel Beck
@DanielBeck -yes
cwd

Antworten:

10

Ab Mountain Lion 1 können Sie auch den Befehl scutil verwenden.

Beispielsweise:

$ scutil --nc list | grep Connected

Weitere Informationen finden Sie auf der Manpage oder unter:

$ scutil --nc help

Fußnoten:

  1. Ich bin mir nicht bewusst, dass dieser Befehl in OSX-Versionen vor Mountain Lion vorhanden ist, aber ich könnte mich irren.
codiert
quelle
0

Da Sie die Benutzeroberfläche über die Systemeinstellungen definieren, ist die Verwendung von AppleScript eine einfache Möglichkeit, dies zu tun. Hier ist ein Ausschnitt, der das tut, was Sie tun möchten:

# Get the major version number. Mavericks changes the way things are done.
set osversion to do shell script "sw_vers 2>/dev/null | awk '/ProductVersion/ { print $2    }' | cut -f 2 -d ."
if osversion is less than 9 then
    set vpntype to 10
else
    set vpntype to 11
end if
try
    tell application "System Events"
        tell current location of network preferences
            set vpnservice to (name of first service whose kind is vpntype) as string
            set myConnection to the service vpnservice
            if myConnection is not null then
                if current configuration of myConnection is not connected then
                    return "Not Connected"
                else
                    return "Connected"
                end if
            end if
        end tell
    end tell
on error error_message
    return error_message
    error number -128
end try

Speichern Sie dies irgendwo als Skript (und stellen Sie sicher, dass Sie es als Skriptdatei speichern!).

Wenn Sie es ausführen möchten, verwenden Sie den folgenden Befehl: osascript /path/to/script.scpt

Oder machen Sie einen Alias, der das ausführt.

Alex Plumb
quelle