Адключыце адзін профіль OpenVPN GUI, а не ўсе тунелі
Тунель, якім кіруе GUI, патрабуе каманды GUI, а тунель пад кіраваннем службы — кіравання службай. Вызначце, якая праграма валодае профілем, перш чым пісаць скрыпт.
Скрыпт адключэння звычайна не спраўляецца па адной прычыне: ён звяртаецца не да таго ўладальніка. Тунель, якім кіруе грамадскі OpenVPN GUI, належыць сеансу гэтага GUI, тунель, запушчаны службай Windows, належыць службе, а OpenVPN Connect не належыць нікому з іх. Прайдзіце гэтыя праверкі па парадку і спыніцеся, калі ўладальнік незразумелы. Каманда забіць працэс з-за няпэўнага ўладальніка — гэта шлях, якім адключэнне аднаго профілю ператвараецца ў збой усёй пляцоўкі.
Для злучэння, якім кіруе 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.
Калі стан ніколі не змяняецца, уладальнік, хутчэй за ўсё, не той, да каго вы звярнуліся. Пераправерце сеанс і ўліковы запіс, перш чым пераходзіць да мацнейшай каманды.
Што запісаць у журнал
Запішыце назву профілю, уладальніка, да якога вы звярнуліся, кантэкст запуску і выніковы стан. Не вылівайце поўную канфігурацыю або ўліковыя даныя ў журнал задачы і не запісвайце камандны радок, калі ён змяшчае шлях да файла з сакрэтамі.
Паведамленне пра памылку з назвай профілю і кантэкстам дастаткова, каб наступны чалавек узнавіў праблему. Журнал, які фіксуе толькі агульны код выхаду, вяртае іх да пачатку, і менавіта там здагадкі пачынаюцца зноў.