Одного нажатия достаточно, чтобы запустить VPN на Mac, и у Apple есть два собственных способа привязать его. Shortcuts даёт каждой команде собственную комбинацию клавиш и пункт в строке меню. Automator даёт Quick Action, клавишу для которой вы назначаете в Системных настройках, отдельно от самого рабочего процесса. Оба пути отправляют один и тот же запрос одной и той же службе подключения, поэтому важные различия в том, где живёт привязка, через какие ворота разрешений вы проходите и что проверяете, когда клавиша вроде бы ничего не делает.

Всё ниже предполагает существующую системную службу VPN, которая видна в scutil --nc list. Если ваш провайдер поставляет сторонний клиент, подключение которого там никогда не появляется, ни один из двух инструментов не сможет управлять им через scutil, и вам нужно собственное действие этого провайдера.

Оба пути вызывают одну и ту же службу

Начните со списка, а не с приложения. scutil --nc list выводит каждую сохранённую службу с её состоянием и точным отображаемым именем, и именно эту строку нужно заключить в кавычки в команде:

/usr/sbin/scutil --nc start "Office VPN"

Эта строка — запрос на активацию. Он возвращается, как только запрос принят; он не ждёт второго фактора, не сообщает, что частный DNS установлен, и не подтверждает, что файловый сервер отвечает. Считайте его тем же щелчком, который вы сделали бы в меню, только без меню.

В scutil также нет переключателя. Отдельные действия подключения и отключения рассуждаются легче, чем одна клавиша, переворачивающая состояние, потому что переворот, нажатый во время рукопожатия, может остановить подключение, которое так и не поднялось до конца. Если вам нужна одна клавиша, ветвитесь по выводу scutil --nc status "Office VPN" и решайте явно; не чередуйте вслепую.

Shortcuts: одна клавиша на действие, больше поверхности разрешений

  1. Создайте в Shortcuts локальную команду и назовите её по задаче, например Connect Office VPN.

  2. Добавьте Run Shell Script и вставьте запрос запуска, набрав имя службы буквально, а не взяв его из буфера обмена или выделенного текста.

  3. Запустите его один раз из редактора в собственной сессии, в которой вы вошли, и завершите обычный поток аутентификации, чтобы система записала нужное разрешение.

  4. Откройте сведения о команде и привяжите комбинацию через Add Keyboard Shortcut. Apple документирует эту привязку в своём руководстве пользователя Shortcuts; комбинации, которые система уже зарезервировала, забрать нельзя.

Привязка путешествует вместе с командой, поэтому одно действие может без лишней работы сидеть и в строке меню, и в Dock. Цена — второе разрешение: Shortcuts не запустит скрипт оболочки, пока в его настройках не разрешено написание скриптов, а на управляемом Mac этот параметр может быть заблокирован политикой. Разрешайте это для команд, которые вы сами написали или прочитали, а не для импортированного файла с неясным содержимым.

Синхронизация — другая ловушка. Команда, скопированная с другого Mac, по-прежнему несёт буквальное имя службы того Mac. На машине, где служба называется иначе, клавиша срабатывает, скрипт завершается, и ничто не говорит вам почему.

Automator: меньше движущихся частей, клавиша, которую нужно поискать

  1. В Automator выберите Quick Action, настройте рабочий процесс так, чтобы он не принимал ввод ни в одном приложении, и добавьте Run Shell Script с той же командой, оболочка /bin/zsh.

  2. Сохраните его под именем, которое узнаете в списке, потому что именно это имя вы будете искать позже.

  3. Откройте Системные настройки, затем Клавиатуру, затем Сочетания клавиш, затем Службы. Найдите рабочий процесс, поставьте галочку, если её нет, и запишите комбинацию.

Рабочий процесс вызывается как служба, поэтому клавиша живёт в таблице служб и зависит от имени рабочего процесса. Если позже переименовать сохранённый рабочий процесс, стоит снова открыть эту панель и убедиться, что назначение уцелело. Служебное сочетание глобально, что удобно до тех пор, пока оно не столкнётся с комбинацией, которую хочет другое приложение.

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

Где они расходятся, когда клавиша ничего не делает

SymptomShortcuts routeAutomator route
Key fires, nothing connectsService name mismatch; re-read scutil --nc listSame name mismatch inside the shell action
Key never fires anywhereBinding collides with a reserved or app-level combinationService entry unticked in Keyboard Shortcuts, or renamed
An authorization dialog appears every timePrompt comes from the VPN type, not from ShortcutsSame prompt, same cause; the script runs as you
Connects, no reachable resourceReadiness not checked after the requestIdentical gap, identical fix
Works only inside one appRare; check where the shortcut is made availableWorkflow set to receive input from a specific app

Таблица намеренно кривая: в двух из её пяти строк исправление действительно другое. Большинство неудачных нажатий сводится к одной и той же паре неисправностей, имени, не совпадающему с сохранённой службой, и запросу, принятому за завершённое подключение, и смена инструмента не излечит ни одну из них.

Оба пути также отказываются хранить учётные данные. Комбинация клавиш не может превратить интерактивный вход в необслуживаемый, а вставка пароля в скрипт — худшая идея, чем набирать его раз в день.

Выбирайте по этим трём условиям

Выбирайте Shortcuts, когда хотите клавишу на действие плюс доступ из строки меню и когда написание скриптов на машине уже разрешено. Выбирайте Automator, когда хотите один файл для копирования между Mac и никакого лишнего переключателя. Если ваша организация запирает написание скриптов в Shortcuts, Quick Action — единственная из двух, которая заработает без изменения политики, и это решает вопрос за вас.

Прежде чем полагаться на клавишу, пройдите этот список: подтвердите службу в scutil --nc list; нажмите клавишу с холодного старта и наблюдайте за scutil --nc status; откройте ресурс, ради которого существует туннель; и создайте отдельное, ясно названное действие отключения. Не помещайте единственное действие остановки на удалённую сессию, до которой вам нужен туннель.

Следующий шаг: привяжите только Connect, оставьте Disconnect непривязанным на день и отметьте, как часто вы всё равно тянетесь к меню. Это скажет вам, экономит ли нажатие время или просто скрывает состояние.

Похожие статьи