Jak mogę sprawdzić, czy OS X jest podłączony do sieci VPN z wiersza poleceń?

12

Jak mogę sprawdzić, czy OS X jest podłączony do sieci VPN z wiersza poleceń?

Działając ifconfigbez żadnych argumentów, gdy jestem podłączony, widzę, że istnieje utun0interfejs, który wydaje się być połączeniem VPN. Kiedy się rozłączam, znika.

Myślę, że mógłbym użyć czegoś takiego do sprawdzenia ciągu utun0i policzenia wystąpień:

ifconfig | grep -c utun0

Ale czy istnieje łatwiejszy lub bardziej skuteczny sposób na sprawdzenie tego? Jeśli utun0jest urządzeniem, a nawet pseudo urządzeniem, czy nie powinienem być w stanie sprawdzić, czy istnieje ono z czymś takim jak:

if [ -a '/dev/utun0' ]

Niestety nie widzę żadnych zmian w tym katalogu podczas podłączania i odłączania, po prostu zobaczyć /dev/tun0przez /dev/tun15i nie mogę catich nawet z sudo...

Czy istnieje prostszy sposób stwierdzenia, czy mam połączenie VPN?

cwd
źródło
Jaki rodzaj VPN? Wbudowany konfigurujesz w Preferencjach systemowych ?
Daniel Beck
@DanielBeck -yes
cwd

Odpowiedzi:

10

Możesz również, począwszy od Mountain Lion 1 , użyć polecenia scutil.

Na przykład:

$ scutil --nc list | grep Connected

Aby uzyskać bardziej szczegółową pomoc, możesz zobaczyć stronę podręcznika lub uruchomić:

$ scutil --nc help

Przypisy:

  1. Nie znam tego polecenia w wersjach OSX wcześniejszych niż Mountain Lion, ale mogę się mylić.
zakodowane
źródło
0

Ponieważ definiujesz interfejs za pomocą Preferencji systemowych, łatwym sposobem na zrobienie tego byłoby użycie AppleScript. Oto fragment, który zrobi to, co chcesz:

# 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

Zapisz go gdzieś jako skrypt (i upewnij się, że zapisałeś go jako plik skryptu!).

Za każdym razem, gdy chcesz go uruchomić, użyj polecenia: osascript /path/to/script.scpt

Lub stwórz alias, który to wykona.

Alex Plumb
źródło