Styr ein namngitt Tunnelblick-profil frå terminalen
Tunnelblick tilbyr connect, state og disconnect via AppleScript. Kall det grensesnittet, la appen halde på ansvaret og gje kvar venting ein frist.
Skript som treng VPN oppe før ein tryggleikskopi, startar ofte openvpn direkte. Det forlèt profilen, DNS og rutehandteringa som Tunnelblick alt styrer. Den støtta vegen er Tunnelblick sitt eige AppleScript-grensesnitt, som tek imot connect-, state- og disconnect-førespurnader for ein namngitt konfigurasjon. Bruk det, og la appen halde på ansvaret.
Snakk med appen, ikkje med openvpn
Tunnelblick eig OpenVPN-profilen, valet av motor, skripta og DNS- og ruteintegreringa. Ein eigen openvpn-binær er eit anna oppstartsarrangement, ikkje ein snøggveg til same tilkoplinga.
Å kalle skriptgrensesnittet til appen held på det eigarskapet og gjer kvar førespurnad etterprøvbar.
Døma her føreset at Tunnelblick ligg i Applications, at ein fungerande konfigurasjon heiter HQ, og at kommandoane køyrer i økta til den innlogga Mac-brukaren. Endre namnet til den nøyaktige konfigurasjonen du har.
Start nøyaktig éin namngitt profil
Ein connect-førespurnad namngir konfigurasjonen. Det er ikkje ein førespurnad om å kopie til det som vart valt sist.
Køyr han i brukarøkta som eig konfigurasjonen:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Gå gjennom dei vanlege innloggingsspørsmåla. macOS kan spørje om appen som kallar, får styre Tunnelblick; sjekk kva app og kva mål før du godkjenner. Automatisering som klikkar seg gjennom dialogen, gjer dialogen meiningslaus.
Ein connect-førespurnad kjem tilbake før tunnelen er oppe
Skriptrettleiinga til Tunnelblick er tydeleg: connect kjem tilbake før tilkoplinga er ferdig. Ein null-utgangsstatus tyder på at førespurnaden vart godteken, ikkje at trafikken flyt.
Les tilstanden separat:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED er eit resultat av tilkoplingsstatus. Det provar enno ikkje at den private ressursen jobben din treng, er nåbar, så sjekk det separat før du startar avhengig arbeid.
Andre kontrollar i skriptgrensesnittet dekkjer breiare handlingar og trengst ikkje når berre éin profil blir endra.
Vent med ein frist, og feil deretter
Evig spørjing er måten eit skript heng heile natta og blokkerer neste køyring. Gje ventinga ein frist, eit kort intervall og eit tydeleg feilutfall. Handsame kvar tilstand utanom CONNECTED som ikkje klar, også overgangstilstandane. Logg den siste tilstanden du såg, slik at feilen forklarar seg sjølv.
Ei avgrensa løkke ser slik ut:
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 1Tretti sekund er eit døme, ikkje ei universell tidsgrense. Vel ein frist ut frå autentiseringsvegen profilen faktisk brukar, og hald han i oppføringa til arbeidsflyten.
Sjekk tilstand og kople frå ved namn
For å stoppe same profil, kall disconnect med same namn. Det held førespurnaden smal og lèt andre konfigurasjonar vere i fred.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Hald profilnamnet og kontrolløren saman i oppføringa til arbeidsflyten, saman med dei venta autentiserings- og fullføringssjekkane. Den oppføringa er det som gjer kommandoen etterprøvbar eit halvt år seinare.
Åtferd ved oppstart med maskinen er ein annan modus. Bruk det dokumenterte oppstartsalternativet til Tunnelblick og oppsettet av påloggingsinformasjon som det ventar. Ein kommando som køyrer i ei innlogga skrivebordsøkt, og ei teneste som startar med maskinen, deler ikkje kontekst. Ikkje gå ut frå at eit skript som verkar medan du er innlogga, også køyrer ved oppstart. Test oppstartsvegen for seg, med same frist og logging.