یک پروفایل OpenVPN GUI را قطع کنید، نه همه تونلها
تونلی که GUI مدیریت میکند به فرمان GUI نیاز دارد و تونلی که سرویس مدیریت میکند به کنترل سرویس. پیش از نوشتن هر اسکریپت مشخص کنید کدام برنامه مالک پروفایل است.
اسکریپت قطع اتصال معمولاً به یک دلیل شکست میخورد: طرف اشتباهی را خطاب قرار میدهد. تونلی که OpenVPN GUI جامعه مدیریت میکند به نشست همان GUI تعلق دارد، تونلی که سرویس ویندوز راهاندازی کرده به سرویس تعلق دارد، و OpenVPN Connect به هیچکدام تعلق ندارد. این بررسیها را به ترتیب انجام دهید و وقتی مالک روشن نیست متوقف شوید. فرستادن فرمان kill به این دلیل که مالک مبهم بود، همان راهی است که قطع اتصال یک پروفایل را به قطعی کل سایت تبدیل میکند.
برای اتصالی که GUI مدیریت میکند، فرمان مفید یک پیام به GUI است، نه یک سیگنال به openvpn.exe.
نخست مالک را مشخص کنید
پیش از نوشتن هر چیزی ببینید کدام برنامه واقعاً وضعیت متصل را نشان میدهد. آیکون در سینی سیستم یعنی نشست GUI مالک آن است. ورودی سرویس یعنی سرویس مالک آن است. پنجره جداگانه برنامه با فهرست پروفایل مخصوص خود یعنی هیچکدام، و رابط ویژه همان نسخه بر آن اعمال میشود.
حساب و نشست دسکتاپ را هم بررسی کنید. نباید فرض کرد که یک وظیفه زمانبندیشده که با کاربر دیگری یا در نشست غیرتعاملی اجرا میشود، همان GUI را که شخص واردشده میبیند کنترل میکند. این ناهمخوانی فرمانی تولید میکند که بیخطا تمام میشود و چیزی را تغییر نمیدهد، و این گرانترین نوع خرابی برای ردیابی از روی گزارش است.
سپس قطع اتصال خودِ مالک را بفرستید
اگر GUI در مسیر نمونه نصب شده باشد و پروفایلی با نام office وجود داشته باشد، کل فرمان یک خط است:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect officeمسیر نصب واقعی خود و نام دقیق پیکربندی را جایگزین کنید، با همان حروف بزرگ و کوچکی که GUI نشان میدهد. مستندات فرمانهای پروژه کنترلهای پشتیبانیشده GUI را فهرست میکند، و این نمونه فقط به OpenVPN GUI تعلق دارد — فرمانی برای هر برنامهای که OpenVPN در نامش دارد نیست.
برای تونلی که مالکش سرویس است، کنترل درست خود سرویس است، نه فایل اجرایی GUI. پیش از متوقف کردن هر چیزی، سرویس نصبشده و پروفایلهایی که مدیریت میکند را بررسی کنید، چون یک توقف میتواند چند تونل را همزمان پایین بیاورد و نتیجهای به تفکیک پروفایل دریافت نخواهید کرد.
بررسی کنید چیز دیگری پایین نیاید
GUI فرمان disconnect_all را هم مستند کرده است و دامنه آن دقیقاً دلیل نامناسب بودنش برای اسکریپتی است که باید فقط office را متوقف کند. اگر برای سادگی وسوسه شدید از آن استفاده کنید، بپرسید چه چیز دیگری روی آن دستگاه متصل است و کاربر چگونه متوجه میشود.
taskkill /F /IM openvpn.exe از دو جهت بدتر است. فرایندها را با نام فایل اجرایی انتخاب میکند و خاتمه را تحمیل میکند، پس نه نام پروفایل را بیان میکند و نه توالی عادی قطع اتصال مالک را. نامیدن این کار خاموشی مرتب، هر دو مشکل را پشت یک کد خروج پنهان میکند.
هر مسیری را که انتخاب کنید، پیش از تغییر دامنه اثر را بررسی کنید: پروفایلهای متصل را فهرست کنید، یادداشت کنید کدامها باید بمانند و بعداً دوباره بررسیشان کنید.
وضعیت را تأیید کنید، نه کد خروج را
پس از درخواست قطع، وضعیت اتصال نامبرده را از طریق مالکش بخوانید، نه با اعتماد به مقدار بازگشتی فرمان. اگر گام بعدی پس از برچیدن به شبکه نیاز دارد، با یک مهلت صریح منتظر همان تغییر وضعیت بمانید، بهجای اینکه فرض کنید وقتی فرایند بازگشت پاکسازی تمام شده است. اسکریپتی که با برچیدن مسابقه میدهد گاهبهگاه شکست میخورد و تقصیر به گردن VPN میافتد.
اگر وضعیت هرگز تغییر نکرد، احتمالاً مالک همان کسی نیست که خطاب کردید. پیش از تشدید به فرمانی قویتر، نشست و حساب را دوباره بررسی کنید.
چه چیزی در گزارش بنویسید
نام پروفایل، مالکی که خطاب کردید، بافت راهاندازی و وضعیت حاصل را ثبت کنید. پیکربندی کامل یا اطلاعات اعتبارنامه را در گزارش وظیفه نریزید و اگر خط فرمان مسیری به فایلی با اسرار دارد آن را ثبت نکنید.
پیام خطایی که پروفایل و بافت را نام میبرد برای بازتولید مشکل توسط نفر بعد کافی است. گزارشی که فقط یک کد خروج عمومی ثبت میکند آنها را به ابتدا برمیگرداند و همانجاست که حدسها از نو شروع میشود.