Skripta za prekinitev običajno ne uspe iz enega razloga: obrača se na napačnega lastnika. Tunel, ki ga upravlja skupnostni OpenVPN GUI, pripada seji tega GUI, tunel, ki ga zažene storitev Windows, pripada storitvi, OpenVPN Connect pa ne pripada nobenemu od njiju. Pojdite skozi te preglede po vrsti in se ustavite, ko lastnik ni jasen. Pošiljanje ukaza kill, ker je bil lastnik dvoumen, je natanko pot, po kateri prekinitev enega profila postane izpad celotne lokacije.

Pri povezavi, ki jo upravlja GUI, je koristen ukaz sporočilo GUI, ne signal openvpn.exe.

Najprej ugotovite lastnika

Preden kar koli napišete, poglejte, kateri program dejansko prikazuje povezano stanje. Ikona v sistemski pladnji pomeni, da ga ima seja GUI. Vnos storitve pomeni, da ga ima storitev. Ločeno okno aplikacije z lastnim seznamom profilov ne pomeni nobenega od obeh, zanj pa velja njegov lastni vmesnik, specifičen za različico.

Preverite tudi račun in sejo namizja. Za načrtovano opravilo, ki teče kot drug uporabnik ali v neinteraktivni seji, ne smete domnevati, da upravlja GUI, ki ga vidi prijavljena oseba. To neskladje ustvari ukaz, ki se konča čisto in ničesar ne spremeni, in to je najdražja vrsta napake za iskanje iz dnevnika.

Nato pošljite lastnikovo lastno prekinitev

Če je GUI nameščen na poti iz primera in obstaja profil z imenom office, je celoten ukaz ena vrstica:

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

Nadomestite ga s svojo dejansko potjo namestitve in natančnim imenom konfiguracije, vključno z velikimi in malimi črkami, kot jih prikazuje GUI. Dokumentacija ukazov projekta navaja podprte kontrolnike GUI, in ta primer pripada samo OpenVPN GUI — to ni ukaz za vsako aplikacijo z OpenVPN v imenu.

Pri tunelu v lasti storitve je pravi nadzor storitev, ne binarna datoteka GUI. Preden karkoli ustavite, preglejte nameščeno storitev in profile, ki jih upravlja, ker lahko zaustavitev hkrati podre več tunelov in rezultata po posameznih profilih ne boste dobili.

Preverite, da nič drugega ne pade

GUI dokumentira tudi ukaz disconnect_all, in prav njegov obseg je razlog, da je napačno orodje za skripto, ki naj ustavi samo office. Če vas mika, da bi ga zaradi preprostosti uporabili, vprašajte, kaj je še povezano na tem računalniku in kako bo uporabnik to opazil.

taskkill /F /IM openvpn.exe je slabši v dveh pogledih. Izbere procese po imenu izvršljive datoteke in vsili prekinitev, zato ne izraža ne imena profila ne običajnega zaporedja prekinitve lastnika. To imenovati urejeno zaustavitev pomeni skriti oba problema za enim samim izhodnim stanjem.

Ne glede na pot, ki jo izberete, pred spremembo preverite obseg vpliva: naštejte povezane profile, zabeležite, kateri naj bi preživeli, in jih nato znova preverite.

Potrdite stanje, ne izhodne kode

Ko zahtevate prekinitev, preberite stanje imenovane povezave prek njenega lastnika, namesto da bi zaupali povratni vrednosti ukaza. Če naslednji korak po razgradnji potrebuje omrežje, počakajte na to spremembo stanja z izrecno časovno omejitvijo, namesto da bi domnevali, da je čiščenje končano, ko se je proces vrnil. Skripta, ki tekmuje z razgradnjo, bo občasno spodletela in krivda bo padla na VPN.

Če se stanje nikoli ne spremeni, lastnik verjetno ni tisti, na katerega ste se obrnili. Znova preverite sejo in račun, preden prestopite na močnejši ukaz.

Kaj zapisati v dnevnik

Zapišite ime profila, lastnika, na katerega ste se obrnili, in kontekst zagona ter nastalo stanje. Ne zlivajte celotne konfiguracije ali poverilnic v dnevnik opravila in ne beležite ukazne vrstice, če vsebuje pot do datoteke s skrivnostmi.

Sporočilo o napaki, ki imenuje profil in kontekst, zadostuje, da naslednja oseba problem ponovi. Dnevnik, ki beleži le splošno izhodno kodo, jih pošlje nazaj na začetek, in tam se ugibanje začne znova.

Sorodni članki