Ang mga script na nangangailangan ng VPN na nakaupo bago ang backup ay madalas na direktang naglalabas ng openvpn. Iniiwan nito ang profile, DNS at paghawak ng ruta na pinamamahalaan na ng Tunnelblick. Ang sinusuportahang landas ay ang sariling AppleScript interface ng Tunnelblick, na tumatanggap ng connect, state at disconnect na kahilingan para sa pinangalanang configuration. Gamitin ito, at hayaang manatiling may pananagutan ang app.

Kausapin ang app, hindi ang openvpn

Pag-aari ng Tunnelblick ang OpenVPN profile, ang pagpili ng engine, ang mga script at ang integrasyon ng DNS at ruta. Ang hiwalay na openvpn binary ay ibang kaayusan ng paglunsad, hindi shortcut sa parehong koneksyon.

Ang pagtawag sa scripting interface ng app ay nagpapanatili ng pagmamay-aring iyon at ginagawang masusuri ang bawat kahilingan.

Ipinapalagay ng mga halimbawa dito na ang Tunnelblick ay nasa Applications, ang gumaganang configuration ay tinatawag na HQ at ang mga utos ay tumatakbo sa session ng naka-log in na Mac user. Palitan ang pangalan ng eksaktong configuration na mayroon ka.

Magsimula ng eksaktong isang pinangalanang profile

Pinangalanan ng connect kahilingan ang configuration. Hindi ito kahilingan na kumonekta sa huling napili.

Patakbuhin ito sa session ng user na may-ari ng configuration:

osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'

Dumaan sa karaniwang mga prompt sa pag-sign in. Maaaring itanong ng macOS kung pinapayagan ang tumatawag na app na kontrolin ang Tunnelblick; tingnan kung aling app at aling target bago mag-apruba. Ang automation na nagki-click sa dialog na iyon ay sumisira sa layunin ng dialog.

Bumabalik ang connect kahilingan bago pa umangat ang tunnel

Malinaw ang scripting guide ng Tunnelblick: bumabalik ang connect bago matapos ang koneksyon. Ang zero exit status ay nangangahulugang tinanggap ang kahilingan, hindi na dumadaloy ang trapiko.

Basahin ang estado nang hiwalay:

osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'

Ang CONNECTED ay resulta ng estado ng koneksyon. Hindi pa nito pinapatunayan na maabot ang pribadong resource na kailangan ng trabaho mo, kaya suriin iyon nang hiwalay bago simulan ang umaasa na trabaho.

Ang iba pang kontrol sa scripting interface ay sumasaklaw sa mas malawak na aksyon at hindi kailangan kapag isang profile lang ang nagbabago.

Maghintay na may takda, pagkatapos ay mabigo

Ang walang katapusang pag-poll ang dahilan kung bakit nakabitin ang script magdamag at hinaharangan ang susunod na pagtakbo. Bigyan ang paghihintay ng takda, maikling agwat at malinaw na resulta ng pagkabigo. Ituring na hindi handa ang anumang estado maliban sa CONNECTED, kasama ang mga transisyonal. I-log ang huling estadong nakita mo upang ipaliwanag ng pagkabigo ang sarili nito.

Ganito ang hitsura ng may hanggang loop:

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 1

Ang tatlumpung segundo ay halimbawa, hindi pangkalahatang timeout. Pumili ng takda mula sa landas ng pagpapatotoo na talagang ginagamit ng profile, at itago iyon sa talaan ng workflow.

Suriin ang estado at idiskonekta ayon sa pangalan

Para ihinto ang parehong profile, tawagin ang disconnect na may parehong pangalan. Pinapanatili nitong makitid ang kahilingan at hinahayaang payapa ang iba pang configuration.

osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'

Itago nang magkasama ang pangalan ng profile at ang controller sa talaan ng workflow, kasama ang inaasahang pagsusuri ng pagpapatotoo at pagkumpleto. Ang talaang iyon ang nagpapasuri ng utos kahit anim na buwan pa ang lumipas.

Ang pag-uugali sa pagsisimula kasama ang computer ay ibang mode. Gamitin ang dokumentadong opsyon sa pagsisimula ng Tunnelblick at ang setup ng kredensyal na inaasahan nito. Ang utos na tumatakbo sa naka-log in na desktop session at ang serbisyong nagsisimula kasama ang makina ay hindi nagbabahagi ng konteksto. Huwag ipagpalagay na ang script na gumagana habang naka-log in ka ay tatakbo rin sa boot. Subukan ang landas ng pagsisimula nang hiwalay, na may parehong takda at pag-log.

Kaugnay na mga artikulo