Skripti, ki pred varnostno kopijo potrebujejo delujoč VPN, pogosto zaženejo openvpn neposredno. S tem opustijo profil, DNS in obdelavo poti, ki jih Tunnelblick že upravlja. Podprta pot je lastni vmesnik AppleScript v Tunnelblicku, ki sprejema zahteve connect, state in disconnect za imenovano konfiguracijo. Uporabljajte ga in pustite aplikaciji odgovornost.

Govorite z aplikacijo, ne z openvpn

Tunnelblick ima profil OpenVPN, izbiro motorja, skripte ter integracijo DNS in poti. Ločena binarna datoteka openvpn je drugačna zasnova zagona, ne bližnjica do iste povezave.

Klic skriptnega vmesnika aplikacije ohrani to lastništvo nedotaknjeno in naredi vsako zahtevo pregledno.

Primeri tukaj predpostavljajo, da je Tunnelblick v Applications, da se delujoča konfiguracija imenuje HQ in da se ukazi izvajajo v seji prijavljenega uporabnika Maca. Ime spremenite v natančno konfiguracijo, ki jo imate.

Zaženite natanko en imenovan profil

Zahteva connect imenuje konfiguracijo. To ni zahteva za povezavo s tistim, kar je bilo nazadnje izbrano.

Zaženite jo v uporabniški seji, ki ima konfiguracijo:

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

Pojdite skozi običajne pozive za prijavo. macOS lahko vpraša, ali sme kličoča aplikacija upravljati Tunnelblick; preverite, katera aplikacija in kateri cilj, preden odobrite. Avtomatizacija, ki preskoči to pogovorno okno, mu odvzame smisel.

Zahteva connect se vrne, preden je tunel postavljen

Skriptni vodnik Tunnelblicka je izrecen: connect se vrne, preden se povezava konča. Ničelno izhodno stanje pomeni, da je bila zahteva sprejeta, ne da promet teče.

Preberite stanje ločeno:

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

CONNECTED je rezultat stanja povezave. Še ne dokazuje, da je zasebni vir, ki ga vaše delo potrebuje, dosegljiv, zato to preverite ločeno, preden začnete odvisno delo.

Drugi elementi upravljanja v skriptnem vmesniku pokrivajo širša dejanja in niso potrebni, ko se spremeni samo en profil.

Počakajte z rokom, nato ne uspite

Neskončno poizvedovanje je način, kako skript visi vso noč in blokira naslednji zagon. Čakanju dajte rok, kratek interval in jasen izid neuspeha. Vsako stanje, razen CONNECTED, obravnavajte kot nepripravljeno, tudi prehodna. Zabeležite zadnje videno stanje, da se neuspeh pojasni sam.

Omejena zanka izgleda takole:

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

Trideset sekund je primer, ne univerzalna časovna omejitev. Izberite rok glede na pot preverjanja pristnosti, ki jo profil dejansko uporablja, in ga hranite v zapisu delovnega toka.

Preverite stanje in prekinite po imenu

Če želite ustaviti isti profil, pokličite disconnect z istim imenom. To ohrani zahtevo ozko in pusti druge konfiguracije pri miru.

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

Hranite ime profila in krmilnik skupaj v zapisu delovnega toka, skupaj s pričakovanimi preverjanji pristnosti in dokončanja. Prav ta zapis naredi ukaz pregleden tudi pol leta pozneje.

Vedenje ob zagonu z računalnikom je drug način. Uporabite dokumentirano možnost zagona Tunnelblicka in nastavitev poverilnic, ki jo pričakuje. Ukaz, izveden v prijavljeni namizni seji, in storitev, ki se zažene s strojem, si ne delita konteksta. Ne predpostavljajte, da bo skript, ki deluje, dokler ste prijavljeni, deloval tudi ob zagonu. Preizkusite pot zagona posebej, z enakim rokom in beleženjem.

Sorodni članki