Skripte koje trebaju VPN prije sigurnosne kopije često pokreću openvpn izravno. Time se napuštaju profil, DNS i obrada ruta kojima Tunnelblick već upravlja. Podržan put je Tunnelblickovo vlastito AppleScript sučelje, koje prihvaća connect, state i disconnect zahtjeve za imenovanu konfiguraciju. Koristite ga i pustite aplikaciju da ostane zadužena.

Razgovarajte s aplikacijom, ne s openvpn-om

Tunnelblick posjeduje OpenVPN profil, izbor motora, skripte te DNS i integraciju ruta. Zasebna openvpn binarna datoteka je drugačiji način pokretanja, a ne prečac do iste veze.

Pozivanje aplikacijskog skriptnog sučelja čuva to vlasništvo netaknutim i čini svaki zahtjev preglednim.

Primjeri ovdje pretpostavljaju da Tunnelblick živi u Applications, da se radna konfiguracija zove HQ i da se naredbe izvršavaju u sesiji prijavljenog Mac korisnika. Promijenite ime u točnu konfiguraciju koju imate.

Pokrenite točno jedan imenovani profil

Connect zahtjev imenuje konfiguraciju. To nije zahtjev da se poveže s onim što je posljednje odabrano.

Pokrenite ga u korisničkoj sesiji koja posjeduje konfiguraciju:

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

Prođite kroz uobičajene upite za prijavu. macOS može pitati je li aplikaciji koja poziva dopušteno kontrolirati Tunnelblick; provjerite koja aplikacija i koja meta prije odobravanja. Automatizacija koja preskače taj dijalog obesmišljava dijalog.

Connect zahtjev se vraća prije nego je tunel podignut

Tunnelblickov vodič za skripte je izričit: connect se vraća prije završetka veze. Nulti izlazni status znači da je zahtjev prihvaćen, a ne da promet teče.

Pročitajte stanje odvojeno:

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

CONNECTED je rezultat stanja veze. On još ne dokazuje da je privatni resurs koji vaš posao treba dostupan, pa to provjerite odvojeno prije početka zavisnog rada.

Ostale kontrole u skriptnom sučelju pokrivaju šire radnje i nisu potrebne kada se mijenja samo jedan profil.

Čekajte s rokom, pa neuspješno završite

Beskonačno anketiranje je način na koji skripta visi cijelu noć i blokira sljedeće pokretanje. Dajte čekanju rok, kratak interval i izričit ishod neuspjeha. Tretirajte svako stanje osim CONNECTED kao nespremno, uključujući prijelazna. Zabilježite posljednje viđeno stanje da se neuspjeh sam objasni.

Ograničena petlja izgleda ovako:

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 sekundi je primjer, a ne univerzalni tajmaut. Odaberite rok prema putu autentifikacije koji profil stvarno koristi i držite ga u zapisu radnog toka.

Provjerite stanje i prekinite po imenu

Da zaustavite isti profil, pozovite disconnect s istim imenom. To drži zahtjev uskim i ostavlja druge konfiguracije na miru.

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

Držite ime profila i kontroler zajedno u zapisu radnog toka, uz očekivane provjere autentifikacije i završetka. Taj zapis je ono što naredbu čini preglednom šest mjeseci kasnije.

Ponašanje pri pokretanju s računalom je drugi način rada. Koristite dokumentiranu Tunnelblick opciju pokretanja i postavljanje vjerodajnica koje ona očekuje. Naredba pokrenuta u prijavljenoj radnoj sesiji i servis koji se pokreće s računalom ne dijele kontekst. Ne pretpostavljajte da će skripta koja radi dok ste prijavljeni raditi i pri podizanju. Testirajte put pokretanja zasebno, s istim rokom i zapisivanjem.

Povezani članci