عادةً ما يفشل سكربت الفصل لسبب واحد: السكربت يخاطب المالك الخطأ. النفق الذي تديره واجهة OpenVPN الرسومية يخص جلسة تلك الواجهة، والنفق الذي تبدأه خدمة Windows يخص الخدمة، أما OpenVPN Connect فلا يخص أيّاً منهما. نفّذ هذه الفحوص بالترتيب وتوقّف حين يكون المالك غير واضح. إرسال أمر قتل لأن المالك كان ملتبساً هو الطريق الذي يحوّل فصل ملف واحد إلى انقطاع في الموقع بأكمله.

بالنسبة إلى اتصال تديره الواجهة الرسومية، الأمر المفيد هو رسالة إلى الواجهة، لا إشارة إلى openvpn.exe.

أولاً، حدّد المالك

انظر إلى البرنامج الذي يعرض حالة الاتصال فعلياً قبل أن تكتب أي شيء. أيقونة في شريط النظام تعني أن جلسة الواجهة الرسومية هي المالك. ومدخل خدمة يعني أن الخدمة هي المالك. ونافذة تطبيق منفصلة بقائمة ملفات خاصة بها تعني ألا أحد منهما، وينطبق عليها واجهتها الخاصة بكل إصدار.

افحص الحساب وجلسة سطح المكتب أيضاً. المهمة المجدولة التي تعمل بحساب مستخدم آخر، أو في جلسة غير تفاعلية، لا ينبغي افتراض أنها تتحكم في الواجهة التي يراها المستخدم المسجّل. هذا التعارض ينتج أمراً ينتهي بنجاح دون أن يغيّر شيئاً، وهو أغلى أنواع الأعطال في التتبع من السجلات.

ثم أرسل أمر الفصل الخاص بالمالك

عند تثبيت الواجهة في المسار المذكور في المثال ووجود ملف شخصي باسم office، يكون الأمر كاملاً في سطر واحد:

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

استبدل المسار بمسار التثبيت الحقيقي لديك، واسم الإعدادات بالاسم الدقيق نفسه بما في ذلك حالة الأحرف كما تعرضها الواجهة. توثّق وثائق أوامر المشروع أدوات التحكم المدعومة في الواجهة، وهذا المثال يخص OpenVPN GUI وحده — وليس أمراً لكل تطبيق يحمل OpenVPN في اسمه.

بالنسبة إلى نفق مملوك لخدمة، فأداة التحكم الصحيحة هي الخدمة، لا ملف الواجهة التنفيذي. افحص الخدمة المثبَّتة والملفات التي تديرها قبل إيقاف أي شيء، لأن الإيقاف قد يُسقط عدة أنفاق في وقت واحد ولن تحصل على نتيجة لكل ملف على حدة.

تأكد من أن لا شيء آخر يسقط

توثّق الواجهة أيضاً أمر disconnect_all، ونطاقه هو بالضبط سبب كونه الأداة الخطأ لسكربت هدفه إيقاف office فقط. إذا راودتك الرغبة في استخدامه للتبسيط، فاسأل ما الذي يتصل أيضاً على ذلك الجهاز وكيف سيلاحظ المستخدم ذلك.

taskkill /F /IM openvpn.exe أسوأ من ناحيتين. فهو يختار العمليات باسم الملف التنفيذي، ويفرض الإنهاء، فلا يعبّر عن اسم ملف ولا عن تسلسل الفصل الطبيعي لدى المالك. وتسمية ذلك إغلاقاً رشيقاً تخفي المشكلتين خلف رمز خروج واحد.

أياً كان المسار الذي تسلكه، تحقّق من نطاق التأثير قبل التغيير: اسرد الملفات المتصلة، وسجّل أيها يجب أن يبقى، ثم افحصها مرة أخرى بعد ذلك.

أكّد الحالة، لا رمز الخروج

بعد طلب الفصل، اقرأ حالة الاتصال المسمّى عبر مالكه بدلاً من الوثوق بقيمة إرجاع الأمر. وإذا كانت الخطوة التالية تحتاج الشبكة بعد التفكيك، فانتظر تغيّر الحالة بمهلة صريحة بدلاً من افتراض أن التنظيف انتهى عند عودة العملية. السكربت الذي يسابق التفكيك سيفشل بشكل متقطع وسيُنسب الفشل إلى الـVPN.

إذا لم تتغيّر الحالة أبداً، فالأرجح أن المالك ليس من خاطبته. أعد فحص الجلسة والحساب قبل الانتقال إلى أمر أقوى.

ما يجب تسجيله في السجل

سجّل اسم الملف، والمالك الذي خاطبته، وسياق التشغيل، والحالة الناتجة. لا تُفرغ الإعدادات الكاملة أو بيانات الاعتماد في سجل المهمة، ولا تسجّل سطر الأمر إذا كان يحتوي على مسار ملف فيه أسرار.

رسالة خطأ تسمّي الملف والسياق تكفي ليعيد الشخص التالي إنتاج المشكلة. أما السجل الذي يسجّل رمز خروج عاماً فقط فيعيدهم إلى البداية، ومن هناك يبدأ التخمين من جديد.

مقالات ذات صلة