Ovládání pojmenovaného profilu Tunnelblick z terminálu
Tunnelblick zpřístupňuje connect, state a disconnect přes AppleScript. Volejte toto rozhraní, nechte aplikaci ve vedení a každému čekání dejte lhůtu.
Skripty, které před zálohou potřebují běžící VPN, často spouštějí openvpn přímo. Tím opouštějí profil, DNS a správu tras, kterou Tunnelblick už řídí. Podporovaná cesta je vlastní rozhraní AppleScript v Tunnelblicku, které přijímá požadavky connect, state a disconnect pro pojmenovanou konfiguraci. Používejte ho a nechte aplikaci, ať zůstane ve vedení.
Mluvte s aplikací, ne s openvpn
Tunnelblick vlastní profil OpenVPN, volbu jádra, skripty a integraci DNS a tras. Samostatný binární soubor openvpn je jiné uspořádání spuštění, ne zkratka ke stejnému připojení.
Volání skriptovacího rozhraní aplikace zachovává toto vlastnictví nedotčené a činí každý požadavek kontrolovatelným.
Příklady tu předpokládají, že Tunnelblick je v Applications, pracovní konfigurace se jmenuje HQ a příkazy běží v relaci přihlášeného uživatele Macu. Změňte název na přesnou konfiguraci, kterou máte.
Spusťte právě jeden pojmenovaný profil
Požadavek connect pojmenovává konfiguraci. Není to požadavek připojit se k tomu, co bylo naposledy vybráno.
Spusťte ho v uživatelské relaci, která konfiguraci vlastní:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Projděte obvyklými výzvami k přihlášení. macOS se může zeptat, zda smí volající aplikace ovládat Tunnelblick; než schválíte, zkontrolujte, která aplikace a který cíl. Automatizace, která tím dialogem proklikne, ničí smysl dialogu.
Požadavek connect se vrátí dřív, než je tunel nahoře
Skriptovací příručka Tunnelblicku je výslovná: connect se vrací dřív, než se připojení dokončí. Nulový návratový stav znamená, že požadavek byl přijat, ne že teče provoz.
Přečtěte stav zvlášť:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED je výsledek stavu připojení. Stále nedokazuje, že soukromý prostředek, který vaše úloha potřebuje, je dostupný, takže to před zahájením závislé práce ověřte zvlášť.
Další ovládací prvky skriptovacího rozhraní pokrývají širší akce a nejsou potřeba, když se mění jen jeden profil.
Čekejte se lhůtou, pak selže
Nekonečné dotazování je způsob, jak skript visí celou noc a blokuje další běh. Dejte čekání lhůtu, krátký interval a výslovný výsledek selhání. Každý stav jiný než CONNECTED považujte za nepřipravený, včetně přechodných. Zaznamenejte poslední viděný stav, aby selhání vysvětlilo samo sebe.
Omezená smyčka vypadá takto:
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 1Třicet sekund je příklad, ne univerzální časový limit. Zvolte lhůtu podle cesty ověřování, kterou profil skutečně používá, a udržujte ji v záznamu pracovního postupu.
Zkontrolujte stav a odpojte podle názvu
Chcete-li zastavit stejný profil, zavolejte disconnect se stejným názvem. Drží to požadavek úzký a ostatní konfigurace nechává na pokoji.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Držte název profilu a řadič pohromadě v záznamu pracovního postupu spolu s očekávanými kontrolami ověřování a dokončení. Právě tento záznam činí příkaz kontrolovatelným i po šesti měsících.
Chování při startu s počítačem je jiný režim. Použijte dokumentovanou volbu spuštění Tunnelblicku a nastavení přihlašovacích údajů, které očekává. Příkaz spuštěný v přihlášené relaci na ploše a služba, která startuje s počítačem, nesdílejí kontext. Nepředpokládejte, že skript, který funguje, dokud jste přihlášeni, poběží při startu. Otestujte cestu spuštění samostatně, se stejnou lhůtou a protokolováním.