Как я могу сказать, если OS X подключен к сети VPN из командной строки?

12

Как я могу сказать, если OS X подключен к сети VPN из командной строки?

Работая ifconfigбез каких-либо аргументов, когда я подключен, я вижу, что есть utun0интерфейс, который выглядит как VPN-соединение. Когда я отключаюсь, он уходит.

Я считаю, что я мог бы использовать что-то вроде этого, чтобы проверить строку utun0и подсчитать вхождения:

ifconfig | grep -c utun0

Но есть ли более простой или эффективный способ проверить это? Если utun0это устройство или даже псевдоустройство, я не смогу проверить, существует ли оно с чем-то вроде:

if [ -a '/dev/utun0' ]

К сожалению , я не вижу каких - либо изменений в этой директории при подключении и отключении, я просто вижу /dev/tun0сквозь , /dev/tun15и я не могу catих даже с sudo...

Есть ли более простой способ узнать, есть ли у меня VPN-соединение?

УХО
источник
Что за VPN? Встроенный вы настраиваете в Системных настройках ?
Даниэль Бек
@DanielBeck -yes
cwd

Ответы:

10

Вы также можете, начиная с Горного Льва 1 , использовать команду scutil.

Например:

$ scutil --nc list | grep Connected

Для получения более подробной справки вы можете посмотреть справочную страницу или запустить:

$ scutil --nc help

Примечания:

  1. Я не знаю об этой команде, существующей в версиях OSX до Mountain Lion, но я могу ошибаться.
закодированный
источник
0

Так как вы определяете интерфейс через Системные настройки, простой способ сделать это - использовать AppleScript. Вот фрагмент, который будет делать то, что вы хотите сделать:

# 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

Сохраните это как скрипт где-нибудь (и убедитесь, что вы сохранили его как файл скрипта!).

В любое время, когда вы хотите запустить его, используйте команду: osascript /path/to/script.scpt

Или создайте псевдоним, который выполняет это.

Алекс Пламб
источник