Скрыпты, якім патрэбны VPN да запуску рэзервовага капіравання, часта запускаюць openvpn напрамую. Гэта адкідае профіль, DNS і апрацоўку маршрутаў, якімі Tunnelblick ужо кіруе. Падтрыманы шлях — уласны інтэрфейс AppleScript ад Tunnelblick, які прымае запыты connect, state і disconnect для названай канфігурацыі. Карыстайцеся ім, і хай праграма застаецца галоўнай.

Размаўляйце з праграмай, а не з openvpn

Tunnelblick валодае профілем OpenVPN, выбарам рухавіка, скрыптамі і інтэграцыяй DNS і маршрутаў. Асобны бінарнік openvpn — гэта іншая схема запуску, а не кароткі шлях да таго ж злучэння.

Выклік скрыптовага інтэрфейсу праграмы захоўвае гэтае валоданне нязменным і робіць кожны запыт даступным для праверкі.

Прыклады тут мяркуюць, што Tunnelblick знаходзіцца ў Applications, працоўная канфігурацыя называецца HQ, а каманды выконваюцца ў сесіі ўвайшоўшага карыстальніка Mac. Змяніце імя на дакладную канфігурацыю, якая ў вас ёсць.

Запусціце роўна адзін названы профіль

Запыт connect называе канфігурацыю. Гэта не запыт на злучэнне з тым, што было выбрана апошнім.

Выканайце яго ў сесіі карыстальніка, якому належыць канфігурацыя:

osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'

Прайдзіце звычайныя запыты ўваходу. macOS можа спытаць, ці дазволена праграме, якая выклікае, кіраваць Tunnelblick; праверце, якая праграма і якая мэта, перш чым ухваліць. Аўтаматызацыя, якая праскоквае гэты дыялог, знішчае сэнс дыялогу.

Запыт connect вяртаецца да таго, як тунель падняты

Кіраўніцтва па скрыптах Tunnelblick кажа прама: connect вяртаецца да завяршэння злучэння. Нулявы код выхаду азначае, што запыт прыняты, а не што трафік ідзе.

Чытайце стан асобна:

osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'

CONNECTED — гэта вынік стану злучэння. Ён яшчэ не даказвае, што прыватны рэсурс, патрэбны вашай задачы, дасяжны, таму праверце гэта асобна перад пачаткам залежнай працы.

Іншыя элементы кіравання ў скрыптовым інтэрфейсе ахопліваюць шырэйшыя дзеянні і не патрэбныя, калі змяняецца толькі адзін профіль.

Чакайце з дэдлайнам, потым сканчайце няўдачай

Бясконцае апытанне — гэта тое, з-за чаго скрыпт вісіць усю ноч і блакуе наступны запуск. Дайце чаканню дэдлайн, кароткі інтэрвал і відавочны вынік няўдачы. Лічыце любы стан, акрамя CONNECTED, не гатовым, у тым ліку пераходныя. Запішыце апошні ўбачаны стан, каб няўдача сама сябе тлумачыла.

Абмежаваны цыкл выглядае так:

for i in $(seq 1 30); do
  state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
  if [ "$state" = "CONNECTED" ]; then exit 0; fi
  sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1

Трыццаць секунд — гэта прыклад, а не ўніверсальны тайм-аўт. Выбірайце дэдлайн зыходзячы з шляху аўтэнтыфікацыі, які профіль фактычна выкарыстоўвае, і захоўвайце яго ў запісе працоўнага працэсу.

Праверце стан і адключыце па імені

Каб спыніць той самы профіль, выклічце disconnect з тым самым імем. Гэта захоўвае запыт вузкім і не закранае іншыя канфігурацыі.

osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'

Трымайце імя профілю і кантролер разам у запісе працоўнага працэсу, разам з чаканымі праверкамі аўтэнтыфікацыі і завяршэння. Менавіта гэты запіс робіць каманду прыдатнай для праверкі праз шэсць месяцаў.

Паводзіны пры запуску разам з камп’ютарам — гэта іншы рэжым. Выкарыстоўвайце дакументаваную опцыю запуску Tunnelblick і наладку ўліковых даных, якую яна чакае. Каманда, выкананая ў сесіі ўвайшоўшага працоўнага стала, і служба, якая стартуе разам з машынай, не падзяляюць кантэкст. Не мяркуйце, што скрыпт, які працуе, пакуль вы ўвайшлі, запусціцца пры загрузцы. Тэстуйце шлях запуску асобна, з тым жа дэдлайнам і журналам.

Падобныя артыкулы