A leválasztó szkript általában egy okból hiúsul meg: a rossz tulajdonost szólítja meg. A közösségi OpenVPN GUI által kezelt alagút az adott GUI munkamenetéhez tartozik, a Windows-szolgáltatás által indított alagút a szolgáltatáshoz, az OpenVPN Connect pedig egyikhez sem. Végezze el ezeket az ellenőrzéseket sorrendben, és álljon meg, amikor a tulajdonos nem egyértelmű. A kill parancs küldése azért, mert a tulajdonos kétértelmű volt, pontosan az az út, amelyen egy profil leválasztásából az egész telephely kiesése lesz.

GUI által kezelt kapcsolat esetén a hasznos parancs egy üzenet a GUI-nak, nem pedig jelzés az openvpn.exe-nek.

Először állapítsa meg a tulajdonost

Nézze meg, melyik program mutatja valóban a csatlakozott állapotot, mielőtt bármit ír. A rendszertálcán lévő ikon azt jelenti, hogy a GUI munkamenet birtokolja. A szolgáltatásbejegyzés azt jelenti, hogy a szolgáltatás birtokolja. A saját profillistával rendelkező külön alkalmazásablak egyiket sem jelenti, és rá a saját, verzióspecifikus felülete érvényes.

Ellenőrizze a fiókot és az asztali munkamenetet is. Egy másik felhasználóként vagy nem interaktív munkamenetben futó ütemezett feladatról nem szabad feltételezni, hogy a bejelentkezett személy által látott GUI-t vezérli. Ez az eltérés olyan parancsot eredményez, amely tisztán lefut és semmit nem változtat, és ez a legdrágább hibafajta naplóból kideríteni.

Utána küldje el a tulajdonos saját leválasztását

Ha a GUI a példában szereplő útvonalon van telepítve, és létezik egy office nevű profil, a teljes parancs egy sor:

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

Helyettesítse a tényleges telepítési útvonalával és a konfiguráció pontos nevével, beleértve a kis- és nagybetűket úgy, ahogy a GUI mutatja. A projekt parancsdokumentációja felsorolja a támogatott GUI-vezérlőket, és ez a példa kizárólag az OpenVPN GUI-hoz tartozik — nem parancs minden olyan alkalmazáshoz, amelynek nevében OpenVPN szerepel.

A szolgáltatás tulajdonában lévő alagútnál a helyes vezérlő a szolgáltatás, nem a GUI bináris fájlja. Vizsgálja meg a telepített szolgáltatást és az általa kezelt profilokat, mielőtt bármit leállít, mert egy leállítás több alagutat is kidönthet egyszerre, és nem kap profilonkénti eredményt.

Ellenőrizze, hogy semmi más nem esik ki

A GUI a disconnect_all parancsot is dokumentálja, és a hatóköre pontosan az oka annak, hogy rossz eszköz egy olyan szkripthez, amelynek csak az office-t kell leállítania. Ha az egyszerűség kedvéért kísértésbe esne, kérdezze meg, mi más van még csatlakozva azon a gépen, és hogyan veszi ezt észre a felhasználó.

A taskkill /F /IM openvpn.exe két szempontból rosszabb. A futtatható fájl neve alapján választ folyamatokat, és kikényszeríti a leállítást, így sem profilszámot, sem a tulajdonos szokásos leválasztási sorrendjét nem fejezi ki. Ezt rendezett leállításnak nevezni mindkét problémát egyetlen kilépési állapot mögé rejti.

Bármelyik utat választja, a változtatás előtt ellenőrizze a hatás kiterjedését: listázza a csatlakozott profilokat, jegyezze fel, melyeknek túl kell élniük, és utána ellenőrizze őket újra.

Az állapotot igazolja, ne a kilépési kódot

A leválasztás kérése után a megnevezett kapcsolat állapotát a tulajdonosán keresztül olvassa ki, ahelyett hogy a parancs visszatérési értékében bízna. Ha a következő lépésnek a szétszerelés után hálózatra van szüksége, várjon erre az állapotváltozásra kifejezett időkorláttal, ahelyett hogy feltételezné, a tisztítás befejeződött, amikor a folyamat visszatért. A szétszereléssel versenyző szkript időnként meghiúsul, és a hiba a VPN-t fogja terhelni.

Ha az állapot soha nem változik, a tulajdonos valószínűleg nem az, akit megszólított. Ellenőrizze újra a munkamenetet és a fiókot, mielőtt erősebb parancsra váltana.

Mi kerüljön a naplóba

Naplózza a profil nevét, a megszólított tulajdonost és az indítási kontextust, valamint a létrejövő állapotot. Ne öntse a teljes konfigurációt vagy a hitelesítő adatokat a feladat naplójába, és ne naplózza a parancssort, ha az titkokat tartalmazó fájlra mutató útvonalat tartalmaz.

Egy hibaüzenet, amely megnevezi a profilt és a kontextust, elég ahhoz, hogy a következő ember újra előállítsa a problémát. Az a napló, amely csak egy általános kilépési kódot rögzít, visszaküldi őket az elejére, és épp ott kezdődik újra a találgatás.

Kapcsolódó cikkek