Controla un perfil de Tunnelblick amb nom des del terminal
Tunnelblick exposa connect, state i disconnect via AppleScript. Crida aquesta interfície, deixa l’aplicació al comandament i dona a cada espera un termini.
Els scripts que necessiten la VPN activa abans d’una còpia de seguretat sovint engeguen openvpn directament. Això abandona el perfil, el DNS i la gestió de rutes que Tunnelblick ja administra. El camí admès és la interfície AppleScript pròpia de Tunnelblick, que accepta peticions connect, state i disconnect per a una configuració amb nom. Feu-la servir i deixeu que l’aplicació continuï al comandament.
Parleu amb l’aplicació, no amb openvpn
Tunnelblick posseeix el perfil OpenVPN, la selecció del motor, els scripts i la integració de DNS i rutes. Un binari openvpn a part és una altra manera d’engegar, no una drecera cap a la mateixa connexió.
Cridar la interfície d’scripting de l’aplicació manté aquesta propietat intacta i fa que cada petició es pugui revisar.
Els exemples d’aquí assumeixen que Tunnelblick viu a Applications, que una configuració que funciona es diu HQ i que les ordres s’executen a la sessió de l’usuari de Mac amb la sessió iniciada. Canvieu el nom per la configuració exacta que teniu.
Engegueu exactament un perfil amb nom
Una petició connect nomena la configuració. No és una petició per connectar el que s’hagués seleccionat l’última vegada.
Executeu-la a la sessió d’usuari que posseeix la configuració:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Passeu pels avisos habituals d’inici de sessió. macOS pot preguntar si l’aplicació que fa la crida pot controlar Tunnelblick; comproveu quina aplicació i quina destinació abans d’aprovar. Una automatització que fa clic per saltar-se aquest diàleg anul·la el sentit del diàleg.
Una petició connect torna abans que el túnel estigui aixecat
La guia d’scripting de Tunnelblick és explícita: connect torna abans que la connexió acabi. Un estat de sortida zero vol dir que la petició s’ha acceptat, no que el trànsit flueixi.
Llegiu l’estat per separat:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED és un resultat d’estat de connexió. Encara no demostra que el recurs privat que necessita la vostra feina sigui abastable, així que comproveu-ho per separat abans de començar la feina dependent.
Altres controls de la interfície d’scripting cobreixen accions més àmplies i no calen quan només canvia un perfil.
Espereu amb un termini i després fall
Fer sondeig per sempre és com un script es penja tota la nit i bloqueja l’execució següent. Donau a l’espera un termini, un interval curt i un resultat de fallada explícit. Tractau qualsevol estat que no sigui CONNECTED com a no llest, incloent-hi els de transició. Registrau l’últim estat que heu vist perquè la fallada s’expliqui sola.
Un bucle limitat té aquest aspecte:
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 1Trenta segons és un exemple, no un temps d’espera universal. Trieu un termini a partir del camí d’autenticació que la configuració fa servir realment i manteniu-lo al registre del flux de treball.
Comproveu l’estat i desconnecteu pel nom
Per aturar el mateix perfil, cridau disconnect amb el mateix nom. Això manté la petició estreta i deixa les altres configuracions tranquil·les.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Manteniu el nom del perfil i el controlador junts al registre del flux de treball, amb les comprovacions d’autenticació i de finalització esperades. Aquest registre és el que fa que l’ordre es pugui revisar sis mesos després.
El comportament d’inici amb l’ordinador és un altre mode. Feu servir l’opció d’inici documentada de Tunnelblick i la configuració de credencials que espera. Una ordre executada en una sessió d’escriptori amb sessió iniciada i un servei que arrenca amb la màquina no comparteixen context. No assumiu que un script que funciona mentre esteu connectat s’executarà a l’arrencada. Proveu el camí d’inici per separat, amb el mateix termini i el mateix registre.