Skripty, ktoré pred zálohou potrebujú bežiaci VPN, často spúšťajú openvpn priamo. Tým opúšťajú profil, DNS a správu trás, ktoré Tunnelblick už riadi. Podporovaná cesta je vlastné rozhranie AppleScript v Tunnelblicku, ktoré prijíma požiadavky connect, state a disconnect pre pomenovanú konfiguráciu. Používajte ho a nechajte aplikáciu zodpovednou.

Hovorte s aplikáciou, nie s openvpn

Tunnelblick vlastní profil OpenVPN, voľbu jadra, skripty a integráciu DNS a trás. Samostatný binárny súbor openvpn je iné usporiadanie spustenia, nie skratka k rovnakému pripojeniu.

Volanie skriptovacieho rozhrania aplikácie zachováva toto vlastníctvo nedotknuté a robí každú požiadavku kontrolovateľnou.

Príklady tu predpokladajú, že Tunnelblick je v Applications, pracovná konfigurácia sa volá HQ a príkazy bežia v relácii prihláseného používateľa Macu. Zmeňte názov na presnú konfiguráciu, ktorú máte.

Spustite práve jeden pomenovaný profil

Požiadavka connect pomenúva konfiguráciu. Nie je to požiadavka pripojiť sa k tomu, čo bolo naposledy vybrané.

Spustite ju v používateľskej relácii, ktorá konfiguráciu vlastní:

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

Prejdite obvyklými výzvami na prihlásenie. macOS sa môže opýtať, či smie volajúca aplikácia ovládať Tunnelblick; pred schválením skontrolujte, ktorá aplikácia a ktorý cieľ. Automatizácia, ktorá týmto dialógom prekliká, ničí zmysel dialógu.

Požiadavka connect sa vráti skôr, než je tunel hore

Skriptovacia príručka Tunnelblicku je výslovná: connect sa vracia skôr, než sa pripojenie dokončí. Nulový návratový stav znamená, že požiadavka bola prijatá, nie že tečie prevádzka.

Prečítajte stav zvlášť:

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

CONNECTED je výsledok stavu pripojenia. Stále nedokazuje, že súkromný zdroj, ktorý vaša úloha potrebuje, je dostupný, preto to pred začatím závislej práce overte zvlášť.

Ďalšie ovládacie prvky skriptovacieho rozhrania pokrývajú širšie akcie a nie sú potrebné, keď sa mení len jeden profil.

Čakajte s lehotou, potom zlyhajte

Nekonečné dopytovanie je spôsob, ako skript visí celú noc a blokuje ďalší beh. Dajte čakaniu lehotu, krátky interval a výslovný výsledok zlyhania. Každý stav iný ako CONNECTED považujte za nepripravený, vrátane prechodných. Zaznamenajte posledný videný stav, aby zlyhanie vysvetlilo samo seba.

Obmedzená slučka vyzerá takto:

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

Tridsať sekúnd je príklad, nie univerzálny časový limit. Zvoľte lehotu podľa cesty overovania, ktorú profil skutočne používa, a držte ju v zázname pracovného postupu.

Skontrolujte stav a odpojte podľa názvu

Ak chcete zastaviť ten istý profil, zavolajte disconnect s rovnakým názvom. Drží to požiadavku úzku a ostatné konfigurácie necháva na pokoji.

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

Držte názov profilu a radič spolu v zázname pracovného postupu, spolu s očakávanými kontrolami overovania a dokončenia. Práve tento záznam robí príkaz kontrolovateľným aj po šiestich mesiacoch.

Správanie pri štarte s počítačom je iný režim. Použite dokumentovanú voľbu spustenia Tunnelblicku a nastavenie prihlasovacích údajov, ktoré očakáva. Príkaz spustený v prihlásenej relácii na ploche a služba, ktorá štartuje s počítačom, nezdieľajú kontext. Nepredpokladajte, že skript, ktorý funguje, kým ste prihlásený, pobeží aj pri štarte. Otestujte cestu spustenia samostatne, s rovnakou lehotou a protokolovaním.

Súvisiace články