Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить в скрипт условие на проверку подключения к интернету

Ответить
Настройки темы
CMD/BAT - [решено] Вставить в скрипт условие на проверку подключения к интернету

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть такой скрипт на разрыв соединения, далее подключение и если не получается подключиться, попытки подключения продолжаются через интервал.

Код: Выделить весь код
@echo off

:: Имя соединения
set connection=pppoe

:: Разорвать соединение
rasdial "%connection:"=%" /disconnect

:: Задержка между проверками, секунд
set pause=5

:LOOP
set connected=0
for /f "delims=" %%i in ('rasdial') do (
if "%%i"=="%connection:"=%" set connected=1
)
if %connected%==0 (
rasdial "%connection:"=%" ЛОГИН ПАРОЛЬ

ping -n %pause% 127.0.0.1>nul 2>&1
goto LOOP
) else (
exit
)
Скрипт нашёл в интернете.
Я конечно же ничерта не понимаю, что такое delims, что такое set connected, об остальном имею общее представление.
Скрипт работает.
Но уже год пытаюсь, но не получается вставить условие, чтобы после строки "rasdial "%connection:"=%" ЛОГИН ПАРОЛЬ" проверялось бы, установлено подключение или нет,
и в зависимости от этого уже - либо exit если установлено, либо пошёл на LOOP, если не установлено.
В оригинальном скрипте приходится ждать интервал даже после успешного установления подключения. Можно конечно просто удалить этот интервал, но мне нужно именно с ним.

Отправлено: 14:36, 25-02-2024

 

Старожил


Сообщения: 247
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата wow7:
уже год пытаюсь, но не получается »

всё получится, при достаточной настойчивости или года уже не те ?


Код: Выделить весь код
ping 8.8.8.8 | findstr -i reply > NUL
echo %errorlevel%
0
отключаем сетевую крату


Код: Выделить весь код
ping 8.8.8.8 | findstr -i reply > NUL
echo %errorlevel%
1
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:16, 25-02-2024 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


зачем отключать сетевую карту? проверку наличия или отсутствия интернета надо сделать теми командами, которые уже есть в скрипте.

Отправлено: 18:08, 25-02-2024 | #3


Старожил


Сообщения: 247
Благодарности: 49

Профиль | Отправить PM | Цитировать


Цитата wow7:
отключать сетевую карту? »
чтобы продемонстировать чем отличается тест кода сети нет и когда есть

Отправлено: 03:06, 27-02-2024 | #4


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Serguei Kouzmine, а разве нельзя обойтись использованием только того, что уже есть в скрипте if "%%i"=="%connection:"=%" set connected=1
)
if %connected%==0 ( ?
Ведь на втором круге проверка наличия либо отсутствия подключения срабатывает как надо, и если подключение уже установлено, скрипт закрывается.

Отправлено: 08:35, 27-02-2024 | #5


Аватара для NickM

Ветеран


Contributor


Сообщения: 4242
Благодарности: 995

Профиль | Отправить PM | Цитировать


wow7, так?
Код: Выделить весь код
@echo off

:: Имя соединения
set "connection=pppoe"

:: Разорвать соединение
rasdial "%connection:"=%" /disconnect

:: Задержка между проверками, секунд
set "pause=5"

:LOOP
Call :CHECKCONN
if %connected%==0 (
  rasdial "%connection:"=%" ЛОГИН ПАРОЛЬ
  ping -n %pause% 127.0.0.1>nul 2>&1
  goto LOOP
)
:EOF

:CHECKCONN
set "connected=0"
for /f "delims=" %%i in ('rasdial') do (
if "%%i"=="%connection:"=%" set "connected=1"
)

Последний раз редактировалось NickM, 27-02-2024 в 09:17.


Отправлено: 09:11, 27-02-2024 | #6


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


NickM, нет, это работает точно так же, как и оригинальный скрипт. в случае успешного установления соединения всё равно выжидает установленный интервал, и только потом скрипт закрывается.

Отправлено: 21:41, 27-02-2024 | #7


Аватара для NickM

Ветеран


Contributor


Сообщения: 4242
Благодарности: 995

Профиль | Отправить PM | Цитировать


Цитата wow7:
нет, это работает точно так же, как и оригинальный скрипт. »
А, так?
Код: Выделить весь код
@echo off
cls

:: Имя соединения
set "connection=pppoe"

:: Разорвать соединение
rasdial "%connection:"=%" /disconnect

:: Задержка между проверками, секунд
set "pause=5"

:LOOP
call :CHECKCONN
if %connected%==0 (
  rasdial "%connection:"=%" ЛОГИН ПАРОЛЬ
  for /l %%a in (1,1,%pause%) do (call :TIMEOUT1)
  goto :LOOP
)
goto :EOF

:TIMEOUT1
call :CHECKCONN
if %connected%==1 ( goto :EOF)
timeout /t 1 /nobreak > nul

:CHECKCONN
set "connected=0"
for /f "delims=" %%i in ('rasdial') do (
if "%%i"=="%connection:"=%" set "connected=1"
)

Последний раз редактировалось NickM, 28-02-2024 в 21:08.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:20, 28-02-2024 | #8


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


NickM, Да, теперь наконец работает! Только зря отредактировал, в конце должно быть обязательно exit /b, а если просто exit, то вообще ничего не работает.

Отправлено: 18:27, 28-02-2024 | #9


Аватара для NickM

Ветеран


Contributor


Сообщения: 4242
Благодарности: 995

Профиль | Отправить PM | Цитировать


Цитата wow7:
в конце должно быть обязательно exit /b, а если просто exit, то вообще ничего не работает. »
По факту, это конечно же лишнее, т.к. :EOF это и так означает "конец";

Цитата wow7:
Да, теперь наконец работает! »
Отлично, походу изначально было не понятно, что Вам требовалось, ведь в изначальном сценарии проверка подключения выполнялась, но только для выхода из цикла требовалось ожидание таймаута.

Отправлено: 21:09, 28-02-2024 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставить в скрипт условие на проверку подключения к интернету

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] Скрипт на VBS на проверку содержимого файла и его замене ospekt00 Скриптовые языки администрирования Windows 5 28-02-2017 15:18
CMD/BAT - [решено] Как сделать проверку чтобы скрипт проверял есть ли в папке файл на удаления? turbolover Скриптовые языки администрирования Windows 2 04-07-2016 17:30
Подскажите как вставить скрипт фонового эффекта воды на форум ??? hd78 Вебмастеру 0 10-09-2015 16:15
Любой язык - скрипт на проверку установленого ПО parrabol Скриптовые языки администрирования Windows 10 07-08-2012 11:32
CMD/BAT - [решено] скрипт подключения к интернету с условием moobi Скриптовые языки администрирования Windows 1 03-03-2011 02:26




 
Переход