Upravljanje imenovanim Tunnelblick profilom iz terminala
Tunnelblick izlaže connect, state i disconnect preko AppleScripta. Pozovite taj interfejs, pustite aplikaciju da ostane odgovorna i dajte svakom čekanju rok.
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 1Trideset 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.