Como posso saber se o OS X está conectado a uma rede VPN a partir da linha de comando?

12

Como posso saber se o OS X está conectado a uma rede VPN a partir da linha de comando?

Ao executar ifconfigsem argumentos quando estou conectado, vejo que há uma utun0interface que parece ser a conexão VPN. Quando eu desconecto, ele desaparece.

Eu acredito que eu poderia usar algo assim para verificar a seqüência utun0e contar as ocorrências:

ifconfig | grep -c utun0

Mas existe uma maneira mais fácil ou eficaz de verificar isso? Se utun0é um dispositivo, ou mesmo um pseudo-dispositivo, eu não deveria poder verificar se existe com algo como:

if [ -a '/dev/utun0' ]

Infelizmente, não vejo nenhuma alteração nesse diretório ao conectar e desconectar, apenas vejo /dev/tun0através /dev/tun15e não consigo, catmesmo com sudo...

Existe uma maneira mais simples de saber se eu tenho uma conexão VPN?

cwd
fonte
Que tipo de VPN? O built-in que você configura nas Preferências do Sistema ?
Daniel Beck
@DanielBeck -yes
cwd

Respostas:

10

Você também pode, a partir do Mountain Lion 1 , usar o comando scutil.

Por exemplo:

$ scutil --nc list | grep Connected

Para obter ajuda mais detalhada, você pode ver a página do manual ou executar:

$ scutil --nc help

Notas de rodapé:

  1. Não conheço esse comando existente nas versões do OSX anteriores ao Mountain Lion, mas posso estar errado.
codificado
fonte
0

Como você define a interface através das Preferências do Sistema, uma maneira fácil de fazer isso seria usar o AppleScript. Aqui está um trecho que fará o que você deseja:

# 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

Salve isso como um script em algum lugar (e certifique-se de salvá-lo como um arquivo de script!).

Sempre que você quiser executá-lo, use o comando: osascript /path/to/script.scpt

Ou faça um alias que faça isso.

Alex Plumb
fonte