Styr en navngivet Tunnelblick-profil fra terminalen
Tunnelblick udstiller connect, state og disconnect via AppleScript. Kald den grænseflade, lad appen beholde styringen, og giv enhver ventetid en frist.
Scripts, der skal have VPN’en oppe før en sikkerhedskopiering, starter ofte openvpn direkte. Det opgiver den profil, DNS og rutehåndtering, som Tunnelblick allerede styrer. Den understøttede vej er Tunnelblicks egen AppleScript-grænseflade, som accepterer connect-, state- og disconnect-anmodninger for en navngivet konfiguration. Brug den, og lad applikationen beholde styringen.
Tal med appen, ikke med openvpn
Tunnelblick ejer OpenVPN-profilen, valget af motor, scriptene samt DNS- og ruteintegrationen. En separat openvpn-binær er et andet opstartsarrangement, ikke en genvej til den samme forbindelse.
At kalde applikationens scripting-grænseflade holder det ejerskab intakt og gør hver anmodning gennemskuelig.
Eksemplerne her antager, at Tunnelblick ligger i Applications, at en fungerende konfiguration hedder HQ, og at kommandoerne kører i den indloggede Mac-brugers session. Skift navnet til den præcise konfiguration, du har.
Start præcis én navngivet profil
En connect-anmodning navngiver konfigurationen. Det er ikke en anmodning om at forbinde til det, der sidst blev valgt.
Kør den i den brugersession, der ejer konfigurationen:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Gå gennem de sædvanlige loginprompter. macOS kan spørge, om den kaldende app må styre Tunnelblick; kontroller hvilken app og hvilket mål, før du godkender. Automatisering, der klikker gennem den dialog, gør dialogen meningsløs.
En connect-anmodning vender tilbage, før tunnelen er oppe
Tunnelblicks scripting-guide er tydelig: connect vender tilbage, før forbindelsen er færdig. En nul-exitstatus betyder, at anmodningen blev accepteret, ikke at trafikken flyder.
Læs tilstanden separat:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED er et forbindelsestilstandsresultat. Det beviser stadig ikke, at den private ressource, dit job har brug for, er nåbar, så kontroller det separat, før du starter afhængigt arbejde.
Andre kontroller i scripting-grænsefladen dækker bredere handlinger og er ikke nødvendige, når kun én profil ændres.
Vent med en frist, og fejl så
Evig polling er måden, hvorpå et script hænger hele natten og blokerer næste kørsel. Giv ventetiden en frist, et kort interval og et tydeligt fejludfald. Behandl enhver tilstand ud over CONNECTED som ikke klar, inklusive overgangstilstandene. Log den sidste tilstand, du så, så fejlen forklarer sig selv.
En afgrænset løkke ser sådan ud:
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 1Tredive sekunder er et eksempel, ikke en universel timeout. Vælg en frist ud fra den godkendelsesvej, profilen faktisk bruger, og hold den i arbejdsgangens registrering.
Kontroller tilstand, og afbryd ved navn
For at stoppe den samme profil skal du kalde disconnect med det samme navn. Det holder anmodningen snæver og lader andre konfigurationer være.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Hold profilnavnet og controlleren sammen i arbejdsgangens registrering sammen med de forventede godkendelses- og færdiggørelsestjek. Den registrering er det, der gør kommandoen gennemskuelig seks måneder senere.
Adfærd ved opstart med computeren er en anden tilstand. Brug Tunnelblicks dokumenterede opstartsindstilling og den legitimationsopsætning, den forventer. En kommando, der kører i en indlogget skrivebordssession, og en tjeneste, der starter med maskinen, deler ikke kontekst. Antag ikke, at et script, der virker, mens du er logget ind, også kører ved opstart. Test opstartsvejen for sig selv, med samme frist og logning.