Ang script ng pagdiskonekta ay karaniwang nabibigo sa isang dahilan: kausap nito ang maling may-ari. Ang tunnel na pinamamahalaan ng OpenVPN GUI ng komunidad ay pag-aari ng session ng GUI na iyon, ang tunnel na sinimulan ng serbisyo ng Windows ay pag-aari ng serbisyo, at ang OpenVPN Connect ay hindi pag-aari ng alinman sa dalawa. Dumaan sa mga pagsusuring ito nang sunud-sunod at huminto kapag hindi malinaw ang may-ari. Ang pagpapadala ng kill command dahil malabo ang may-ari ay siyang paraan kung paano nagiging pagkaantala ng buong site ang pagdiskonekta ng isang profile.

Para sa koneksyong pinamamahalaan ng GUI, ang kapaki-pakinabang na utos ay isang mensahe sa GUI, hindi senyas sa openvpn.exe.

Una, tukuyin ang may-ari

Tingnan kung aling programa ang tunay na nagpapakita ng konektadong estado bago ka magsulat ng kahit ano. Ang icon sa system tray ay nangangahulugang pag-aari ito ng GUI session. Ang entry ng serbisyo ay nangangahulugang pag-aari ito ng serbisyo. Ang hiwalay na window ng aplikasyon na may sariling listahan ng profile ay hindi alinman sa dalawa, at ang sarili nitong interface na espesipiko sa bersyon ang nalalapat.

Suriin din ang account at desktop session. Ang naka-iskedyul na gawain na tumatakbo bilang ibang gumagamit, o sa hindi interaktibong session, ay hindi dapat ipagpalagay na kumokontrol sa GUI na nakikita ng naka-log in na tao. Ang pagkakaibang ito ay gumagawa ng utos na malinis na natatapos at walang binabago, at iyon ang pinakamahal na uri ng pagkabigo na bakahin mula sa log.

Pagkatapos, ipadala ang sariling pagdiskonekta ng may-ari

Kung ang GUI ay naka-install sa path ng halimbawa at may profile na pinangalanang office, ang buong utos ay isang linya:

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect office

Palitan ito ng iyong tunay na path ng pag-install at ang eksaktong pangalan ng configuration, kabilang ang malalaki at maliliit na titik gaya ng ipinapakita ng GUI. Inililista ng dokumentasyon ng mga utos ng proyekto ang mga sinusuportahang kontrol ng GUI, at ang halimbawang ito ay pag-aari lamang ng OpenVPN GUI — hindi ito utos para sa bawat aplikasyong may OpenVPN sa pangalan.

Para sa tunnel na pag-aari ng serbisyo, ang tamang kontrol ay ang serbisyo, hindi ang GUI binary. Suriin ang naka-install na serbisyo at ang mga profile na pinamamahalaan nito bago huminto ng kahit ano, dahil ang isang paghinto ay maaaring magpabagsak ng ilang tunnel nang sabay at hindi ka makakakuha ng resulta sa bawat profile.

Tiyaking walang ibang bumabagsak

Idinodokumento rin ng GUI ang utos na disconnect_all, at ang saklaw nito ang siyang dahilan kung bakit mali itong kasangkapan para sa script na dapat huminto lamang sa office. Kung matutukso kang gamitin ito para sa simplehang paraan, itanong kung ano pa ang konektado sa makina at paano ito mapapansin ng gumagamit.

taskkill /F /IM openvpn.exe ay mas masama sa dalawang paraan. Pinipili nito ang mga proseso sa pamamagitan ng pangalan ng executable, at pinipilit ang pagwawakas, kaya hindi nito ipinapahayag ang pangalan ng profile o ang normal na pagkakasunod-sunod ng pagdiskonekta ng may-ari. Ang tawagin itong maayos na pagsasara ay itinatago ang dalawang problema sa likod ng isang status ng paglabas.

Anuman ang landas na piliin, tiyakin ang saklaw ng epekto bago ang pagbabago: ilista ang mga konektadong profile, itala kung alin ang dapat mabuhay, at suriin muli ang mga ito pagkatapos.

Kumpirmahin ang estado, hindi ang exit code

Pagkatapos hilingin ang pagdiskonekta, basahin ang estado ng pinangalanang koneksyon sa pamamagitan ng may-ari nito sa halip na magtiwala sa return value ng utos. Kung ang susunod na hakbang ay nangangailangan ng network pagkatapos ng pagbuwag, hintayin ang pagbabagong iyon ng estado na may tahasang timeout sa halip na ipagpalagay na tapos na ang paglilinis nang bumalik ang proseso. Ang script na nakikipagkarera sa pagbuwag ay pana-panahong mabibigo at ang VPN ang sisisihin.

Kung hindi kailanman nagbabago ang estado, malamang na ang may-ari ay hindi ang kinausap mo. Suriin muli ang session at account bago lumipat sa mas malakas na utos.

Ano ang ilalagay sa log

Itala ang pangalan ng profile, ang may-ari na kinausap mo at ang konteksto ng paglunsad, kasama ang resultang estado. Huwag ibuhos ang buong configuration o mga kredensyal sa log ng gawain, at huwag itala ang command line kung may path ito patungo sa file na may mga lihim.

Ang mensahe ng error na nagpapangalan sa profile at konteksto ay sapat para maulit ng susunod na tao ang problema. Ang log na nagtatala lamang ng pangkalahatang exit code ay nagpapabalik sa kanila sa simula, at doon nagsisimulang muli ang haka-haka.

Kaugnay na mga artikulo