Искључите један OpenVPN GUI профил, а не све тунеле
Тунел којим управља GUI захтева GUI команду, а тунел којим управља услуга захтева контролу услуге. Утврдите која програма поседује профил пре него што било шта скриптујете.
Скрипта за искључивање обично не успева из једног разлога: обраћа се погрешном власнику. Тунел којим управља заједнички OpenVPN GUI припада сесији тог GUI-ја, тунел који покрене Windows услуга припада услузи, а 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.
Ако се стање никада не промени, власник вероватно није онај којем сте се обратили. Поново проверите сесију и налог пре него што пређете на јачу команду.
Шта ставити у дневник
Забележите назив профила, власника којем сте се обратили и контекст покретања, уз резултујуће стање. Не сипајте пуну конфигурацију ни акредитиве у дневник задатка и не бележите командну линију ако садржи путању до датотеке са тајнама.
Порука о грешци која именује профил и контекст довољна је да следећа особа репродукује проблем. Дневник који бележи само општи излазни код шаље их назад на почетак, а управо ту нагађање почиње изнова.