Névvel ellátott Tunnelblick-profil vezérlése a terminálból
A Tunnelblick connect, state és disconnect műveleteket kínál AppleScripten keresztül. Hívja ezt az interfészt, hagyja az alkalmazást felelősnek, és adjon minden várakozásnak határidőt.
A biztonsági mentés előtt VPN-t igénylő szkriptek gyakran közvetlenül indítják az openvpnt. Ez elhagyja a profilt, a DNS-t és az útvonalkezelést, amelyet a Tunnelblick már irányít. A támogatott út a Tunnelblick saját AppleScript-interfésze, amely connect, state és disconnect kéréseket fogad el egy nevesített konfigurációhoz. Használja ezt, és hagyja az alkalmazást felelősnek.
Az alkalmazással beszéljen, ne az openvpnnel
A Tunnelblick birtokolja az OpenVPN-profilt, a motor kiválasztását, a szkripteket, valamint a DNS- és útvonal-integrációt. Egy külön openvpn bináris más indítási elrendezés, nem rövidítés ugyanahhoz a kapcsolathoz.
Az alkalmazás szkriptinterfészének hívása érintetlenül tartja ezt a tulajdont, és minden kérést áttekinthetővé tesz.
Az itteni példák azt feltételezik, hogy a Tunnelblick az Applications mappában van, egy működő konfiguráció neve HQ, és a parancsok a bejelentkezett Mac-felhasználó munkamenetében futnak. Módosítsa a nevet a pontos konfigurációra, amellyel rendelkezik.
Pontosan egy nevesített profilt indítson
A connect kérés megnevezi a konfigurációt. Ez nem kérés arra, hogy a legutóbb kiválaszthoz csatlakozzon.
Futtassa abban a felhasználói munkamenetben, amely a konfigurációt birtokolja:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Menjen végig a szokásos bejelentkezési kéréseken. A macOS kérdezheti, hogy a hívó alkalmazás vezérelheti-e a Tunnelblicket; jóváhagyás előtt ellenőrizze, melyik alkalmazás és melyik cél. Az automatizálás, amely átkattint ezen a párbeszéden, értelmetlenné teszi a párbeszédet.
A connect kérés visszatér, mielőtt az alagút felállna
A Tunnelblick szkriptútmutatója egyértelmű: a connect visszatér, mielőtt a kapcsolat befejeződik. A nulla kilépési állapot azt jelenti, hogy a kérés elfogadva, nem azt, hogy a forgalom folyik.
Olvassa ki külön az állapotot:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'A CONNECTED egy kapcsolatállapot-eredmény. Még nem bizonyítja, hogy a feladatához szükséges privát erőforrás elérhető, ezért ezt külön ellenőrizze, mielőtt függő munkát indít.
A szkriptinterfész más vezérlői szélesebb műveleteket fednek le, és nem szükségesek, ha csak egy profil változik.
Várjon határidővel, majd hiúsuljon meg
A végtelen lekérdezés az, amitől egy szkript egész éjjel lóg, és blokkolja a következő futást. Adjon a várakozásnak határidőt, rövid intervallumot és egyértelmű hibaeredményt. A CONNECTED kivételével minden állapotot késznek nem tekintsen, az átmenetieket is beleértve. Naplózza az utoljára látott állapotot, hogy a hiba magától elmagyarázza magát.
Egy korlátozott ciklus így néz ki:
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 1A harminc másodperc példa, nem általános időtúllépés. A határidőt abból a hitelesítési útból válassza, amelyet a profil valóban használ, és tartsa a munkafolyamat feljegyzésében.
Ellenőrizze az állapotot, és név szerint bontsa a kapcsolatot
Ugyanazon profil leállításához hívja a disconnectet ugyanazzal a névvel. Ez szűkén tartja a kérést, és békén hagyja a többi konfigurációt.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Tartsa a profil nevét és a vezérlőt együtt a munkafolyamat feljegyzésében, a várt hitelesítési és befejezési ellenőrzésekkel együtt. Ez a feljegyzés teszi a parancsot hat hónappal később is áttekinthetővé.
A számítógéppel való indítási viselkedés más mód. Használja a Tunnelblick dokumentált indítási lehetőségét és az általa várt hitelesítőadat-beállítást. A bejelentkezett asztali munkamenetben futtatott parancs és a géppel együtt induló szolgáltatás nem oszt közös kontextust. Ne feltételezze, hogy a bejelentkezés alatt működő szkript a rendszerindításkor is futni fog. Tesztelje az indítási utat külön, ugyanazzal a határidővel és naplózással.