Putuskan satu profil OpenVPN GUI, bukan semua terowong
Terowong yang diurus GUI memerlukan arahan GUI, terowong yang diurus perkhidmatan memerlukan kawalan perkhidmatan. Tentukan program mana yang memiliki profil sebelum anda menulis sebarang skrip.
Skrip pemutusan biasanya gagal kerana satu sebab: ia menyapa pemilik yang salah. Terowong yang diurus OpenVPN GUI komuniti milik sesi GUI itu, terowong yang dimulakan oleh perkhidmatan Windows milik perkhidmatan itu, dan OpenVPN Connect bukan milik mana-mana daripadanya. Lakukan semakan ini mengikut urutan dan berhenti apabila pemiliknya tidak jelas. Menghantar arahan kill kerana pemiliknya samar-samar ialah cara satu pemutusan profil bertukar menjadi gangguan seluruh tapak.
Untuk sambungan yang diurus GUI, arahan berguna ialah mesej kepada GUI, bukan isyarat kepada openvpn.exe.
Pertama, kenal pasti pemiliknya
Lihat program mana yang benar-benar memaparkan keadaan bersambung sebelum anda menulis apa-apa. Ikon dalam dulang sistem bermakna sesi GUI memilikinya. Entri perkhidmatan bermakna perkhidmatan memilikinya. Tetingkap aplikasi berasingan dengan senarai profilnya sendiri bermakna bukan kedua-duanya, dan antara muka khusus versinya sendiri terpakai.
Semak akaun dan sesi desktop juga. Tugas berjadual yang berjalan sebagai pengguna lain, atau dalam sesi bukan interaktif, tidak harus diandaikan mengawal GUI yang dilihat oleh orang yang log masuk. Ketidakpadanan itu menghasilkan arahan yang tamat dengan bersih dan tidak mengubah apa-apa, dan itulah jenis kegagalan paling mahal untuk dijejaki daripada log.
Kemudian hantar pemutusan pemilik itu sendiri
Jika GUI dipasang pada laluan dalam contoh dan ada profil bernama office, keseluruhan arahan ialah satu baris:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect officeGantikannya dengan laluan pemasangan sebenar anda dan nama konfigurasi yang tepat, termasuk huruf besar dan kecil seperti yang dipaparkan GUI. Dokumentasi arahan projek menyenaraikan kawalan GUI yang disokong, dan contoh ini hanya milik OpenVPN GUI — ia bukan arahan untuk setiap aplikasi yang mempunyai OpenVPN dalam namanya.
Untuk terowong milik perkhidmatan, kawalan yang betul ialah perkhidmatan, bukan binari GUI. Periksa perkhidmatan yang dipasang dan profil yang diurusnya sebelum menghentikan apa-apa, kerana satu hentian boleh menjatuhkan beberapa terowong sekali gus dan anda tidak akan mendapat hasil setiap profil.
Pastikan tiada yang lain jatuh
GUI juga mendokumenkan arahan disconnect_all, dan skopnya ialah sebab arahan itu alat yang salah untuk skrip yang sepatutnya menghentikan office sahaja. Jika anda tergoda untuk menggunakannya demi kesederhanaan, tanyakan apa lagi yang bersambung pada mesin itu dan bagaimana pengguna akan menyedarinya.
taskkill /F /IM openvpn.exe lebih teruk dalam dua hal. Ia memilih proses mengikut nama fail boleh laku, dan ia memaksa penamatan, jadi ia tidak menyatakan nama profil mahupun urutan pemutusan biasa pemiliknya. Menyebutnya penutupan yang kemas menyembunyikan kedua-dua masalah di sebalik satu status keluar.
Laluan mana pun yang anda ambil, sahkan skop kesannya sebelum perubahan: senaraikan profil yang bersambung, catat mana yang patut bertahan, dan semak semula selepas itu.
Sahkan keadaan, bukan kod keluar
Selepas meminta pemutusan, baca keadaan sambungan yang dinamakan melalui pemiliknya dan bukannya mempercayai nilai pulangan arahan. Jika langkah seterusnya memerlukan rangkaian selepas pembongkaran, tunggu perubahan keadaan itu dengan had masa yang jelas dan bukannya mengandaikan pembersihan selesai apabila proses kembali. Skrip yang berlumba dengan pembongkaran akan gagal sekali-sekala dan VPN akan dipersalahkan.
Jika keadaan tidak pernah berubah, pemiliknya mungkin bukan yang anda sapa. Semak semula sesi dan akaun sebelum beralih kepada arahan yang lebih kuat.
Apa yang perlu dimasukkan ke dalam log
Rekodkan nama profil, pemilik yang anda sapa dan konteks pelancaran, serta keadaan yang terhasil. Jangan tuangkan konfigurasi penuh atau kelayakan ke dalam log tugas, dan jangan log baris arahan jika ia mengandungi laluan ke fail yang mempunyai rahsia.
Mesej ralat yang menyebut profil dan konteksnya cukup untuk orang seterusnya menghasilkan semula masalah itu. Log yang hanya merekodkan kod keluar generik menghantar mereka kembali ke permulaan, dan di situlah tekaan bermula semula.