Nimetyn Tunnelblick-profiilin hallinta päätteestä
Tunnelblick tarjoaa connect-, state- ja disconnect-toiminnot AppleScriptin kautta. Kutsu sitä rajapintaa, pidä sovellus vastuussa ja anna jokaiselle odotukselle määräaika.
Skriptit, jotka tarvitsevat VPN:n pystyyn ennen varmuuskopiota, käynnistävät usein openvpn:n suoraan. Silloin hylätään profiili, DNS ja reittien käsittely, joita Tunnelblick jo hallitsee. Tuettu polku on Tunnelblickin oma AppleScript-rajapinta, joka ottaa vastaan connect-, state- ja disconnect-pyynnöt nimetylle kokoonpanolle. Käytä sitä ja anna sovelluksen pysyä vastuussa.
Puhu sovellukselle, älä openvpn:lle
Tunnelblick omistaa OpenVPN-profiilin, moottorin valinnan, skriptit sekä DNS- ja reittiyhdistämisen. Erillinen openvpn-binääri on toinen käynnistystapa, ei oikotie samaan yhteyteen.
Sovelluksen skriptausrajapinnan kutsuminen pitää tämän omistajuuden ehjänä ja tekee jokaisesta pyynnöstä tarkistettavan.
Tässä olevat esimerkit olettavat, että Tunnelblick on Applications-kansiossa, toimiva kokoonpano on nimeltään HQ ja komennot ajetaan kirjautuneen Mac-käyttäjän istunnossa. Vaihda nimi täsmälliseen kokoonpanoosi.
Käynnistä täsmälleen yksi nimetty profiili
connect-pyyntö nimeää kokoonpanon. Se ei ole pyyntö yhdistää viimeksi valittuun.
Aja se käyttäjäistunnossa, joka omistaa kokoonpanon:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Käy läpi tavalliset kirjautumiskehotteet. macOS voi kysyä, saako kutsuva sovellus hallita Tunnelblickia; tarkista mikä sovellus ja mikä kohde ennen hyväksymistä. Automaatio, joka klikkaa dialogin ohi, tekee dialogista merkityksettömän.
connect-pyyntö palaa ennen kuin tunneli on pystyssä
Tunnelblickin skriptausopas on yksiselitteinen: connect palaa ennen kuin yhteys valmistuu. Nollapoistumistila tarkoittaa, että pyyntö hyväksyttiin, ei että liikenne kulkee.
Lue tila erikseen:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED on yhteyden tilan tulos. Se ei vielä todista, että työsi tarvitsema yksityinen resurssi on tavoitettavissa, joten tarkista se erikseen ennen riippuvan työn aloittamista.
Muut skriptausrajapinnan ohjaimet kattavat laajempia toimia, eikä niitä tarvita, kun vain yksi profiili muuttuu.
Odota määräajalla ja epäonnistu sitten
Ikuinen kysely on se, miten skripti roikkuu yön yli ja estää seuraavan ajon. Anna odotukselle määräaika, lyhyt väli ja selkeä epäonnistumistulos. Kohtele jokaista tilaa paitsi CONNECTEDia ei-valmiina, myös siirtymätiloja. Kirjaa viimeksi näkemäsi tila, jotta epäonnistuminen selittää itsensä.
Rajoitettu silmukka näyttää tältä:
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 1Kolmekymmentä sekuntia on esimerkki, ei yleinen aikakatkaisu. Valitse määräaika siltä todennuspolulta, jota profiili todella käyttää, ja pidä se työnkulun kirjauksessa.
Tarkista tila ja katkaise nimen perusteella
Saman profiilin pysäyttämiseksi kutsu disconnect samalla nimellä. Se pitää pyynnön kapeana ja jättää muut kokoonpanot rauhaan.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Pidä profiilin nimi ja ohjain yhdessä työnkulun kirjauksessa yhdessä odotettujen todennus- ja valmistumistarkistusten kanssa. Juuri se kirjaus tekee komennosta tarkistettavan kuuden kuukauden kuluttua.
Käynnistyskäyttäytyminen tietokoneen kanssa on toinen tila. Käytä Tunnelblickin dokumentoitua käynnistysvaihtoehtoa ja sitä tunnistetietojen asetusta, jota se odottaa. Kirjautuneessa työpöytäistunnossa ajettu komento ja koneen mukana käynnistyvä palvelu eivät jaa kontekstia. Älä oleta, että kirjautuneena toimiva skripti toimii myös käynnistyksessä. Testaa käynnistyspolku erikseen, samalla määräajalla ja lokituksella.