@demonca13

Запуск скрипта перезагрузки служб с помощью планировщика заданий?

Здравствуйте, оказался в не легком положении.
Имею машины с Windows 7 которые подключаются через OPEN VPN, у шлюза есть Fail Over, если упадет первый оператор, Mikrotik сменит на другой. Скрипт каждые 10 минут проверяет доступность первого шлюза, если он не доступен, заменяет конфиг файл на резервный, все отлично, но есть одна проблема, для того чтобы конфиг вступил в силу, нужно перезагрузить службу OpenVPN. Внедрил в службу команду на стоп старт через net, но если запуск скрипта осуществляет планировщик задач, то Access denied, а если скрипт запустить вручную, то все работает.
На компах только локальный администратор и планировщик запускает скрипт от имени админа.

Буду рад любой помощи.

Сам скрипт

spoiler
@setlocal enableextensions enabledelayedexpansion
@echo off
set ipaddr1= Основной_ИП
set state1=down

for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr1!') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," set state1=up
)
echo.Main is !state1!
for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr1!') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," set state1=up
)
echo.Main is !state1!
for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr1!') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," set state1=up
)
echo.Main is !state1!

set ipaddr2= Резервный_ип
set state2=down

for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr2!') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," set state2=up
)
echo.Backup is !state2!
for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr2!') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," set state2=up
)
echo.Backup is !state2!
for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr2!') do (
if "x%%a"=="xReceived" if "x%%b"=="x1," set state2=up
)
echo.Backup is !state2!

if %state1% NEQ up (
if %state2% NEQ up (
echo.No internet
echo.Do nothing
) else (
echo.Backup is working
fc "c:\Program Files\OpenVPN\config\client.ovpn-резерв" "c:\Program Files\OpenVPN\config\client.ovpn" > nul
if !ERRORLEVEL! EQU "0" (
echo.Continiue to use backup line
) else (
copy "c:\Program Files\OpenVPN\config\client.ovpn-резерв" "c:\Program Files\OpenVPN\config\client.ovpn"
ipconfig /flushdns
net stop OpenVPNService & net start openvpnservice
echo.Backup line activated
)
)
) else (
echo.Main is working
fc "c:\Program Files\OpenVPN\config\client.ovpn-основной" "c:\Program Files\OpenVPN\config\client.ovpn" > nul
if !ERRORLEVEL! EQU 0 (
echo.Continiue to use main line
) else (
copy "c:\Program Files\OpenVPN\config\client.ovpn-основной" "c:\Program Files\OpenVPN\config\client.ovpn"
ipconfig /flushdns
net stop OpenVPNService & net start openvpnservice
echo.Main line activated
)
)

endlocal

  • Вопрос задан
  • 958 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Забейте. OpenVPN сам умеет в HA/failover: https://openvpn.net/community-resources/implementi...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zionkv
Системный администратор Windows\Linux
Попробуйте выполнить от имени системы. Вообще в интернете посмотрите статьи как обойти UAC с помощью планировщика задач и будут именно нужные вам знания в выдаче.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы