Pavadinto „Tunnelblick“ profilio valdymas iš terminalo
„Tunnelblick“ teikia connect, state ir disconnect per „AppleScript“. Iškvieskite tą sąsają, palikite programą atsakingą ir kiekvienam laukimui nustatykite terminą.
Scenarijai, kuriems prieš atsarginę kopiją reikia veikiančio VPN, dažnai paleidžia openvpn tiesiogiai. Taip atsisakoma profilio, DNS ir maršrutų apdorojimo, kuriuos „Tunnelblick“ jau valdo. Palaikomas kelias yra pati „Tunnelblick“ „AppleScript“ sąsaja, kuri priima connect, state ir disconnect užklausas pavadintai konfigūracijai. Naudokite ją ir palikite programą atsakingą.
Kalbėkite su programa, o ne su openvpn
„Tunnelblick“ valdo OpenVPN profilį, variklio pasirinkimą, scenarijus bei DNS ir maršrutų integraciją. Atskiras openvpn dvejetainis failas yra kitokia paleidimo tvarka, o ne trumpesnis kelias į tą patį ryšį.
Programos scenarijų sąsajos iškvietimas išsaugo tą nuosavybę nepakitusią ir leidžia peržiūrėti kiekvieną užklausą.
Pavyzdžiai čia daro prielaidą, kad „Tunnelblick“ yra Applications, veikianti konfigūracija vadinasi HQ, o komandos vykdomos prisijungusio Mac naudotojo sesijoje. Pakeiskite pavadinimą į tikslią konfigūraciją, kurią turite.
Paleiskite tiksliai vieną pavadintą profilį
connect užklausa įvardija konfigūraciją. Tai ne užklausa prisijungti prie to, kas buvo pasirinkta paskutinį kartą.
Vykdykite ją naudotojo sesijoje, kuriai priklauso konfigūracija:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Pereikite įprastus prisijungimo raginimus. macOS gali paklausti, ar kviečiančiai programai leidžiama valdyti „Tunnelblick“; prieš patvirtindami patikrinkite, kuri programa ir koks tikslas. Automatizavimas, kuris paspaudžia pro tą dialogą, panaikina dialogo prasmę.
connect užklausa grįžta prieš pakylant tuneliui
„Tunnelblick“ scenarijų vadovas yra aiškus: connect grįžta prieš pasibaigiant ryšiui. Nulinis išėjimo statusas reiškia, kad užklausa priimta, o ne kad srautas teka.
Skaitykite būseną atskirai:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED yra ryšio būsenos rezultatas. Jis dar neįrodo, kad privatus išteklius, kurio reikia jūsų darbui, yra pasiekiamas, todėl patikrinkite tai atskirai prieš pradėdami priklausomą darbą.
Kitos scenarijų sąsajos valdymo priemonės apima platesnius veiksmus ir nereikalingos, kai keičiasi tik vienas profilis.
Palaukite su terminu, tada nepavykkite
Begalinis klausinėjimas yra tai, dėl ko scenarijus kabo visą naktį ir blokuoja kitą vykdymą. Duokite laukimui terminą, trumpą intervalą ir aiškų nesėkmės rezultatą. Kiekvieną būseną, išskyrus CONNECTED, laikykite nepasiruošusia, įskaitant pereinamąsias. Užregistruokite paskutinę matytą būseną, kad nesėkmė paaiškintų pati save.
Apribota kilpa atrodo taip:
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 1Trisdešimt sekundžių yra pavyzdys, o ne universalus laiko limitas. Pasirinkite terminą pagal autentifikavimo kelią, kurį profilis iš tikrųjų naudoja, ir laikykite jį darbo eigos įraše.
Patikrinkite būseną ir atjunkite pagal pavadinimą
Norėdami sustabdyti tą patį profilį, iškvieskite disconnect su tuo pačiu pavadinimu. Tai išlaiko užklausą siaurą ir palieka kitas konfigūracijas ramybėje.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Laikykite profilio pavadinimą ir valdiklį kartu darbo eigos įraše, kartu su tikėtinais autentifikavimo ir užbaigimo patikrinimais. Būtent tas įrašas leidžia komandą peržiūrėti po pusės metų.
Elgsena paleidžiant kartu su kompiuteriu yra kitas režimas. Naudokite dokumentuotą „Tunnelblick“ paleidimo parinktį ir jos tikimą prisijungimo duomenų sąranką. Komanda, vykdoma prisijungusioje darbalaukio sesijoje, ir paslauga, kuri startuoja su mašina, nesidalija kontekstu. Nemanote, kad scenarijus, veikiantis jums prisijungus, veiks ir įkrovimo metu. Išbandykite paleidimo kelią atskirai, su tuo pačiu terminu ir registravimu.