none
Скрипт проверки VPN-соединения RRS feed

  • Вопрос

  • Всем привет!

    Задача не сложная, нужно проверять установлено ли VPN-соединение, и если нет, то выполнить подключение.

    Сложив гуггл и свои задачи, сделал скриптик

    ping 172.16.1.2 |>nul find /i "TTL="          
    echo %ERRORLEVEL% >> c:/vpn.log
    IF %ERRORLEVEL%==0
    echo VPN is OK >> c:/vpn.log
    ELSE(
    echo Internet connection lost %date% %time% >> c:/vpn.log
    )

    Если пинг до узла через VPN проходит, то пишем в лог, что ОК, если нет связи, то будет команда подключения VPN.

    Но проблема в том, что %ERRORLEVEL% имеет верное значение, а вот IF Не отрабатывает. Ни при %ERRORLEVEL% 1, ни при 0.

    Подскажите, что не так с IF? Нужны скобки, кавычки, обратные кавычки? Вроде всё перепробовал...

    9 сентября 2019 г. 13:20

Ответы

  • Нашел проблему - пробелы перед и после скобочек.

    Спасибо, отработало!

    • Предложено в качестве ответа Vector BCOModerator 9 сентября 2019 г. 14:18
    • Помечено в качестве ответа Vector BCOModerator 26 сентября 2019 г. 5:34
    9 сентября 2019 г. 14:16
  • Пути и так и так у меня отрабатывают. Не так важно.

    Изменение на IF %%ERRORLEVEL%%==0 результата не дало. Не совсем понимаю, как это в CMD вбить, поэтому в скрипте подправил, Запись в файл идет ровно до  IF %%ERRORLEVEL%%==0. Затем записей нет. Следовательно, дальше скрипт не отрабатывает. Или не так отрабатывает, как я планирую... 

    вот так отработает

    ping 172.16.1.2 |>nul find /i "TTL="          
    echo %ERRORLEVEL% >> d:\vpn.log
    if %ERRORLEVEL%==0 (
    echo VPN is OK >> d:\vpn.log
    ) else (
    echo Internet connection lost %date% %time% >> d:\vpn.log
    )

    Вы же условие задаете, IF, а сделать что надо в скобках, так же и else
    • Изменено Farrukh Yakhyaev 9 сентября 2019 г. 14:12
    • Предложено в качестве ответа Vector BCOModerator 9 сентября 2019 г. 14:18
    • Помечено в качестве ответа Vector BCOModerator 26 сентября 2019 г. 5:34
    9 сентября 2019 г. 14:11

Все ответы

  • Здравствуйте.

    Во первых у вас пути неправильные. c:\ 

    Во вторых вбейте эту часть в cmd

    ping 172.16.1.2 |>nul find /i "TTL="          
    echo %ERRORLEVEL% >> c:\vpn.log
    IF %%ERRORLEVEL%%==0
    echo VPN is OK >> c:\vpn.log

    что покажет?


    9 сентября 2019 г. 13:59
  • Пути и так и так у меня отрабатывают. Не так важно.

    Изменение на IF %%ERRORLEVEL%%==0 результата не дало. Не совсем понимаю, как это в CMD вбить, поэтому в скрипте подправил, Запись в файл идет ровно до  IF %%ERRORLEVEL%%==0. Затем записей нет. Следовательно, дальше скрипт не отрабатывает. Или не так отрабатывает, как я планирую... 

    9 сентября 2019 г. 14:10
  • Пути и так и так у меня отрабатывают. Не так важно.

    Изменение на IF %%ERRORLEVEL%%==0 результата не дало. Не совсем понимаю, как это в CMD вбить, поэтому в скрипте подправил, Запись в файл идет ровно до  IF %%ERRORLEVEL%%==0. Затем записей нет. Следовательно, дальше скрипт не отрабатывает. Или не так отрабатывает, как я планирую... 

    вот так отработает

    ping 172.16.1.2 |>nul find /i "TTL="          
    echo %ERRORLEVEL% >> d:\vpn.log
    if %ERRORLEVEL%==0 (
    echo VPN is OK >> d:\vpn.log
    ) else (
    echo Internet connection lost %date% %time% >> d:\vpn.log
    )

    Вы же условие задаете, IF, а сделать что надо в скобках, так же и else
    • Изменено Farrukh Yakhyaev 9 сентября 2019 г. 14:12
    • Предложено в качестве ответа Vector BCOModerator 9 сентября 2019 г. 14:18
    • Помечено в качестве ответа Vector BCOModerator 26 сентября 2019 г. 5:34
    9 сентября 2019 г. 14:11
  • Нашел проблему - пробелы перед и после скобочек.

    Спасибо, отработало!

    • Предложено в качестве ответа Vector BCOModerator 9 сентября 2019 г. 14:18
    • Помечено в качестве ответа Vector BCOModerator 26 сентября 2019 г. 5:34
    9 сентября 2019 г. 14:16
  • Нашел проблему - пробелы перед и после скобочек.

    Спасибо, отработало!

    Если бы вы сразу указали для if действие в скобках, всё бы заработало срузу

    if %ERRORLEVEL%==0 (
    echo VPN is OK >> d:\vpn.log
    )


    9 сентября 2019 г. 14:21
  • Моя первая версия была 

    if %ERRORLEVEL%==0(
    echo VPN is OK >> d:\vpn.log
    )ELSE(

    И без пробелов оно не работало. Я потом просто стер эти скобки

    9 сентября 2019 г. 14:24