Управљање именованим 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 опцију покретања и подешавање акредитива које она очекује. Наредба покренута у пријављеној десктоп сесији и сервис који се покреће са машином не деле контекст. Не претпостављајте да ће скрипта која ради док сте пријављени радити и при подизању. Тестирајте пут покретања засебно, са истим роком и евидентирањем.