Начать настройку VPN из командной строки (OSX)

У меня две конфигурации VPN на моем Mac, и я хотел бы иметь возможность запускать их с консоли, когда я ssh в свою машину.

Я нашел команду networksetup которая позволяет мне настраивать соединения, но насколько я могу сказать, на самом деле не запускать их.

Использование льва.

4 Solutions collect form web for “Начать настройку VPN из командной строки (OSX)”

Вы можете использовать AppleScript для подключения к VPN-услугам по вашему выбору. Мы будем использовать функции оболочки, доступные из командной строки, после их загрузки.

Добавьте функции ниже в ваш ~/.bash_profile или ~/.profile (независимо от того, что вы используете).

Вам просто нужно изменить имя самого VPN-соединения, так как оно отображается в настройках сети . Здесь я использовал свою университетскую VPN.

Введите описание изображения здесь

Вы также можете изменить имена функций, если хотите сделать это для разных. Возможно, это можно будет сократить, используя аргументы, но это работает отлично. Я тестировал его на Snow Leopard (но Leopard и Lion тоже должны работать).

После добавления функций перезагрузите терминал и вызовите их с помощью vpn-connect и vpn-disconnect , соответственно.


 function vpn-connect { /usr/bin/env osascript <<-EOF tell application "System Events" tell current location of network preferences set VPN to service "UniVPN" -- your VPN name here if exists VPN then connect VPN repeat while (current configuration of VPN is not connected) delay 1 end repeat end tell end tell EOF } function vpn-disconnect { /usr/bin/env osascript <<-EOF tell application "System Events" tell current location of network preferences set VPN to service "UniVPN" -- your VPN name here if exists VPN then disconnect VPN end tell end tell return EOF } 

Вы также можете использовать, по крайней мере, Lion 1 , команду scutil.

Например, если у меня есть служба VPN с именем «Foo», я могу подключиться через:

 $ scutil --nc start Foo 

Я могу опционально указать пользователя, пароль и секрет, используя флаги с одинаковыми именами:

 $ scutil --nc start Foo --user bar --password baz --secret quux 

Услуга может быть отключена через:

 $ scutil --nc stop Foo 

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

 $ scutil --nc help 

Обновить

Добавление быстрого сценария для опроса до установления соединения (в ответ на комментарий Эрика Б.

 #!/bin/bash # Call with <script> "<VPN Connection Name>" set -e #set -x vpn="$1" function isnt_connected () { scutil --nc status "$vpn" | sed -n 1p | grep -qv Connected } function poll_until_connected () { let loops=0 || true let max_loops=200 # 200 * 0.1 is 20 seconds. Bash doesn't support floats while isnt_connected "$vpn"; do sleep 0.1 # can't use a variable here, bash doesn't have floats let loops=$loops+1 [ $loops -gt $max_loops ] && break done [ $loops -le $max_loops ] } scutil --nc start "$vpn" if poll_until_connected "$vpn"; then echo "Connected to $vpn!" exit 0 else echo "I'm too impatient!" scutil --nc stop "$vpn" exit 1 fi 

Примечания:

  1. Неясно, когда эта команда была добавлена ​​в OSX, у меня она есть в Mavericks, и пользователь Eric B. сообщает, что она работает в Lion (10.7.5).

Не тестировали это под Lion, но я не использую следующую команду под Mountain Lion без проблем:

 networksetup -connectpppoeservice UniVPN 

Я просто использовал вышеупомянутый скрипт slhck (который, очевидно, золотой бог), чтобы создать этот отличный рубиновый скрипт, который можно было бы использовать для всех видов вещей

 class SwitchIp def go turn_off sleep 3 turn_on end def turn_on `/usr/bin/env osascript <<-EOF tell application "System Events" tell current location of network preferences set VPN to service "StrongVPN" -- your VPN name here if exists VPN then connect VPN end tell end tell EOF` end def turn_off `/usr/bin/env osascript <<-EOF tell application "System Events" tell current location of network preferences set VPN to service "StrongVPN" -- your VPN name here if exists VPN then disconnect VPN end tell end tell EOF` end end 
  • Как предотвратить по умолчанию Windows 7 с помощью VPN-шлюза?
  • VPN или удаленного доступа?
  • Доступ к домашнему сетевому принтеру, когда я использую VPN для подключения к работе
  • Как разрешить локальный доступ к локальной сети при подключении к Cisco VPN?
  • SSH-сервер не может быть подключен, когда VPN включен
  • Подключение через VPN - могут ли они видеть мои сайты в приватном режиме просмотра?
  • Клиент Cisco VPN - внешний URL-адрес отслеживается?
  • Как я могу настроить трафик для маршрутизации Windows VPN (по сети назначения)?
  • Как правильно установить сертификат, выданный мне?
  • Сеть Windows 10 Pro: позволяет пользователям удаленно получать доступ к учетному программному обеспечению на ноутбуке; Безопасность и концептуальные вопросы перед тестированием
  • Маршрутизация трафика ЛВС через eth0, а не tun0, в точке доступа к VPN
  • Interesting Posts

    CallbackOnCollectedDelegate в globalKeyboardHook был обнаружен

    Окно столбца DataGridView – значение и функциональность

    Как вы извлекаете числовое значение из строки в запросе MySQL?

    .htaccess & WordPress: Исключить папку из RewriteRule

    Как использовать регистры vim?

    Thunderbird: Ошибка: imap.server.com: сервер не поддерживает RFC 5746, см. CVE-2009-3555

    Существует ли более быстрый способ найти все файлы в каталоге и во всех подкаталогах?

    Opera как браузер по умолчанию на OS X?

    Какова самая простая функция C # для синтаксического анализа строки JSON в объект?

    Определения @property с ARC: сильные или сохраняются?

    Организация загрузки в Google Chrome

    Как я могу конкатенировать строки в VBA?

    Установить пользователя системы системы suoop для клиента, встроенного в Java webapp

    Разрешение Windows 10 DNS через VPN-соединение не работает

    Порядок инициализации статических полей в статическом classе

    Давайте будем гением компьютера.