Як я можу визначити, чи ОС X підключена до мережі VPN з командного рядка?


12

Як я можу визначити, чи ОС 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

Ви також можете, як для Mountain Lion 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

Або зробити псевдонім, який виконує це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.