¿Cómo puedo saber si OS X está conectado a una red VPN desde la línea de comandos?

12

¿Cómo puedo saber si OS X está conectado a una red VPN desde la línea de comandos?

Al ejecutar ifconfigsin ningún argumento cuando estoy conectado, veo que hay una utun0interfaz que parece ser la conexión VPN. Cuando lo desconecto se va.

Creo que podría usar algo como esto para verificar la cadena utun0y contar las ocurrencias:

ifconfig | grep -c utun0

¿Pero hay una manera más fácil o más efectiva de verificar esto? Si utun0es un dispositivo, o incluso un pseudo dispositivo, ¿no debería poder verificar si existe con algo como:

if [ -a '/dev/utun0' ]

Por desgracia, no veo ningún cambio en ese directorio al conectar y desconectar, acabo de ver /dev/tun0a través /dev/tun15y no puedo catellos incluso con sudo...

¿Hay una manera más simple de saber si tengo una conexión VPN?

cwd
fuente
¿Qué tipo de VPN? ¿El incorporado que configura en Preferencias del sistema ?
Daniel Beck
@DanielBeck -yes
cwd

Respuestas:

10

También puede, a partir de Mountain Lion 1 , usar el comando scutil.

Por ejemplo:

$ scutil --nc list | grep Connected

Para obtener ayuda más detallada, puede ver la página de manual o ejecutar:

$ scutil --nc help

Notas al pie:

  1. No conozco este comando existente en versiones de OSX anteriores a Mountain Lion, pero podría estar equivocado.
codificado
fuente
0

Dado que está definiendo la interfaz a través de Preferencias del sistema, una manera fácil de hacerlo sería utilizar AppleScript. Aquí hay un fragmento que hará lo que quieras hacer:

# 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

Guarde esto como un script en alguna parte (y asegúrese de guardarlo como un archivo de script).

Cada vez que quieras ejecutarlo, usa el comando: osascript /path/to/script.scpt

O haga un alias que realice eso.

Alex Plumb
fuente