Кіраванне названым профілем Tunnelblick з тэрмінала
Tunnelblick прадастаўляе connect, state і disconnect праз AppleScript. Выклікайце гэты інтэрфейс, пакідайце кіраванне праграме і давайце кожнаму чаканню дэдлайн.
Скрыпты, якім патрэбны 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 і наладку ўліковых даных, якую яна чакае. Каманда, выкананая ў сесіі ўвайшоўшага працоўнага стала, і служба, якая стартуе разам з машынай, не падзяляюць кантэкст. Не мяркуйце, што скрыпт, які працуе, пакуль вы ўвайшлі, запусціцца пры загрузцы. Тэстуйце шлях запуску асобна, з тым жа дэдлайнам і журналам.