12

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

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

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

ifconfig | grep -c utun0

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

if [ -a '/dev/utun0' ]

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

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

2 ответа2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .