Skripte koje trebaju VPN pre rezervne kopije često pokreću openvpn direktno. Time se napuštaju profil, DNS i obrada ruta kojima Tunnelblick već upravlja. Podržani put je Tunnelblickov sopstveni AppleScript interfejs, koji prihvata connect, state i disconnect zahteve za imenovanu konfiguraciju. Koristite ga i pustite aplikaciju da ostane odgovorna.

Razgovarajte sa aplikacijom, ne sa openvpn-om

Tunnelblick poseduje OpenVPN profil, izbor motora, skripte i DNS i integraciju ruta. Zaseban openvpn binarni fajl je drugačiji raspored pokretanja, a ne prečica do iste veze.

Pozivanje aplikacionog skript interfejsa čuva to vlasništvo netaknutim i čini svaki zahtev preglednim.

Primeri ovde pretpostavljaju da Tunnelblick živi u Applications, da se radna konfiguracija zove HQ i da se naredbe izvršavaju u sesiji prijavljenog Mac korisnika. Promenite ime u tačnu konfiguraciju koju imate.

Pokrenite tačno jedan imenovani profil

Connect zahtev imenuje konfiguraciju. To nije zahtev da se poveže sa onim što je poslednje izabrano.

Pokrenite ga u korisničkoj sesiji koja poseduje konfiguraciju:

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

Prođite kroz uobičajene upite za prijavu. macOS može pitati da li je aplikaciji koja poziva dozvoljeno da kontroliše Tunnelblick; proverite koja aplikacija i koji cilj pre odobravanja. Automatizacija koja preskače taj dijalog obesmišljava dijalog.

Connect zahtev se vraća pre nego što je tunel podignut

Tunnelblickov vodič za skripte je izričit: connect se vraća pre završetka veze. Nulti izlazni status znači da je zahtev prihvaćen, a ne da saobraćaj 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 proverite odvojeno pre početka zavisnog rada.

Ostale kontrole u skript interfejsu pokrivaju šire akcije i nisu potrebne kada se menja samo jedan profil.

Čekajte sa rokom, pa neuspešno završite

Beskonačno anketiranje je način na koji skripta visi celu noć i blokira sledeće pokretanje. Dajte čekanju rok, kratak interval i izričit ishod neuspeha. Tretirajte svako stanje osim CONNECTED kao nespremno, uključujući prelazna. Zabeležite poslednje viđeno stanje da se neuspeh 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 primer, a ne univerzalni tajmaut. Odaberite rok prema putu autentifikacije koji profil stvarno koristi i držite ga u zapisu radnog toka.

Proverite stanje i prekinite po imenu

Da zaustavite isti profil, pozovite disconnect sa istim imenom. To drži zahtev 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 provere autentifikacije i završetka. Taj zapis je ono što naredbu čini preglednom šest meseci kasnije.

Ponašanje pri pokretanju sa računarom je drugi režim. Koristite dokumentovanu Tunnelblick opciju pokretanja i podešavanje akreditive koje ona očekuje. Naredba pokrenuta u prijavljenoj desktop sesiji i servis koji se pokreće sa mašinom ne dele kontekst. Ne pretpostavljajte da će skripta koja radi dok ste prijavljeni raditi i pri podizanju. Testirajte put pokretanja zasebno, sa istim rokom i evidentiranjem.

Povezani članci