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 ifconfig sem nenhum argumento quando estou conectado, vejo que há uma interface utun0 que parece ser a conexão VPN. Quando eu desligar, vai embora.

Acredito que eu poderia usar algo assim para verificar a string utun0 e contar as ocorrências:

ifconfig | grep -c utun0

Mas há uma maneira mais fácil ou mais eficaz de verificar isso? Se utun0 for um dispositivo ou mesmo um pseudo-dispositivo, não será possível verificar se existe algo como:

if [ -a '/dev/utun0' ]

Infelizmente, não vejo nenhuma alteração nesse diretório ao conectar e desconectar, só vejo /dev/tun0 a /dev/tun15 e não consigo cat , mesmo com sudo ...

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

    
por cwd 03.04.2013 / 01:30

2 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 estou ciente desse comando existente nas versões do OSX anteriores ao Mountain Lion, mas posso estar errado.
por 02.04.2014 / 17:38
0

Como você está definindo 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ê quer fazer:

# 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 crie um alias que execute isso.

    
por 09.01.2014 / 16:23