Показать полную графическую версию : батник который проверял бы пинг, обрывал соединение при ошибке, потом снова подключал
TakedaSun
02-05-2010, 12:23
Есть проблема с VPN интернетом. Периодически пропадает инет через VPN, при этом он не обрывается, а перестают пинговатся сервера с инета.
Если вручную переподключиться то работает снова.
Нужен батник который проверял бы пинг, например с mail.ru, обрывал соединение при ошибке пинга, потом снова подключался и так по кругу.
На IXBT нашел такой скрипт, но он просто проверяет подключение, а мне нужно что бы был еще и ping
@echo off
:: Имя соединения
set connection=My VPN Connection
:: Задержка между проверками, секунд (примерно)
set pause=10
:LOOP
set connected=0
for /f "delims=" %%i in ('rasdial') do (
if "%%i"=="%connection:"=%" set connected=1
)
if %connected%==0 (
echo %date% %time% "%connection%" connection not detected. Dialing...
rasdial "%connection:"=%"
) else (
echo %date% %time% "%connection%" connection is active.
)
ping -n %pause% 127.0.0.1>nul 2>&1
goto LOOP
мне нужно что бы был еще и ping »
set connected=0
ping -n 1 mail.ru >nul&& set connected=1
TakedaSun
02-05-2010, 12:50
amel27, Спасибо за ответ, но в какую часть кода вставить строку ping -n 1 mail.ru >nul&& set connected=1.
TakedaSun, отметил же - сразу после "set connected=0"
TakedaSun
02-05-2010, 14:04
amel27,
выдает
02.05.2010 12:59:49,68 "VPN" connection not detected. Dialing...
Установка связи с VPN...
Проверка имени и пароля пользователя...
Ошибка службы удаленного доступа 691 - Доступ запрещен, поскольку такие имя поль
зователя или пароль недопустимы в этом домене.
Чтобы вывести сведения о данной ошибке:
введите 'hh netcfg.chm' и в Справке
выберите раздел разрешения проблем, затем сообщений об ошибках и найдите
VPN - имя подключения.
Если подключиться обычным способом то работает, имя и пароль заполнены и сохранены.
Как в батнике прописать имя и пароль?
TakedaSun
02-05-2010, 14:29
Похоже этот скрипт кривой, не работает как надо, может реализовать можно с помощью команды rasphone ?
1. проверка vpn подключения, если нет - подключить
2. проверка ping mail.ru если не пингуется разорвать подключение и снова подключить.
3. (задержка 15 сек), и так по кругу.
Как в батнике прописать имя и пароль? »
rasdial /?
TakedaSun
02-05-2010, 15:34
amel27, скрипт указанный выше не подходит для моей проблемы как оказалось.
мне нужен такой:
1. проверка vpn подключения, если нет - подключить
2. проверка ping mail.ru если не пингуется разорвать (именно разорвать главная цель моего вопроса) подключение и снова подключить.
3. (задержка 15 сек), и так по кругу.
Уже голова кипит, не могу качать крупные файлы, стоит отойти от компьютера на один часик, как закачка останавливается. И приходится разрывать подключение вручную и снова подключаться.
именно разорвать главная цель моего вопроса »
эту тему смотрели?.. CMD/BAT - Скрипт автоматического переподключения vpn-соединение (http://forum.oszone.net/thread-159473.html)
TakedaSun
02-05-2010, 16:35
amel27, Тему посмотрел, не получается переписать под мои нужды, не силен в скриптах.
Добрые люди напишите готовый, сил уже нет.
TakedaSun, скрипты скриптами, но отладка вашего батника зависит от конкретного оборудования и настроек, а Вы до сих пор не определились, какими командами вы собираетесь подключать/отключать соединение (к слову, в указанной выше теме применяется ДВА способа - RasDial и DevCon)... я могу помочь в логике батника, но команды подключения/отключения тестировать придется самим (увы, VPN под рукой нет)
registeruser1
09-05-2010, 00:36
Помогите пож-ста кусочком кода...
Нужно сделать на батник пароль.
ЦЕЛЬ-
Сделать в батнике что бы при запуске он проверял на удаленной машине СОДЕРЖИМОЕ текстового файлика (это будут только цифры мин 4 макс 6 цифр), далее запрашивал ввести эти цифры не показывая их на экране и при совпадении введенных цифр и содержимого текстового файлика - команды выполняются дальше, при НЕ совпадении их - команда EXIT.
Путь к файлу такой -
\\terminal_1\c$\WINDOWS\addins\pass.txt
Делаю так, работает -
@echo off
:pass
echo Enter password:
set /p pwd=
if %pwd%== 777 goto :_1
goto :pass
:_1
ping 127.0.0.1
pause
Но не это цель. Нужно что бы он считал с pass.txt содержимое и при совпадении этого содержимого и введенного с клавиатуры, выполнял команды дальше...
ТАК ВОТ КАК ЗАСТАВИТЬ ЕГО СЧИТЫВАТЬ ПО УКАЗАННОМУ ПУТИ, И СРАВНИВАТЬ ЭТИ ДАННЫЕ???
Очень надеюсь на вашу помощь, заранее благодарю...
@echo off
setlocal
set sPath=\\terminal_1\c$\WINDOWS\addins\pass.txt
for /f "usebackq delims==" %%i in ("%sPath%") do set sPassword=%%i
set /p sInPassword=Enter password:
if "%sPassword%" neq "%sInPassword%" exit /b 1
ping 127.0.0.1
pause
endlocal
exit /b 0
registeruser1, в данной теме вопрос выглядит явным оффтопиком.
Я тоже добавлю немного оффтопика: при таком подходе можно и не спрашивать никакого пароля. Мало-мальски приемлемый подход:
хранение в файле не самого пароля, а его хэша;
при вводе пароля — вычисление его хэша;
сравнение хэшэй;
и т.д.
P.S. Скорее всего, вычисление хэша (того же MD5, або иных) потребует либо сторонних утилит, либо другого языка — WSH (http://forum.script-coding.info/viewtopic.php?id=836)/PowerShell (http://xaegr.wordpress.com/2008/08/07/get-md5-string/).
registeruser1
09-05-2010, 07:56
Iska, спасибо большое - то что надо!
Маленький нюанс еще - можно в этом коде прописать что бы он искал только в первой срочке файла pass.txt, на остальные не обращал внимания?
Спасибо большое...
Сорри если оффтоп...
Я ещё сразу хотел так сделать ;), но решил не усложнять. Можно, например, так:
@echo off
setlocal
set sPath=\\terminal_1\c$\WINDOWS\addins\pass.txt
for /f "usebackq delims==" %%i in ("%sPath%") do set sPassword=%%i&& goto :Break
:Break
set /p sInPassword=Enter password:
if "%sPassword%" neq "%sInPassword%" exit /b 1
ping 127.0.0.1
pause
endlocal
exit /b 0
но, помнится, я видел здесь и более элегантный способ.
registeruser1
09-05-2010, 10:27
Iska, ...супер!
Но теперь проблемка в связи с этим нарисовалась -
- если удалить файл пароля pass.txt, то в моей консоли можно просто нажать ENTER и без проблем войти в меню.
Нужно к этому коду прикрутить проверку наличия этого файла (pass.txt) и если его нет - надпись типа "SORRY, PASSWORD NO VALID, press any key for exit".
А если файл есть, но пустой, та же надпись - "SORRY, PASSWORD NO VALID, press any key for exit".
Буду очень признателен если поможете в этом...
registeruser1
09-05-2010, 15:05
...решил перевую задачу -
dir \\terminal_1\c$\WINDOWS\addins\pass.txt* /a-d 2>nul >nul && goto :menu
goto :error
Нужно решить теперь как при наличии файла НО отсутствии в нем пароля тоже что бы не открывался. (если файл есть - но пустой)
если удалить файл пароля pass.txt »
Вообще-то сие задаётся правами.
@echo off
setlocal
set sPath=\\terminal_1\c$\WINDOWS\addins\pass.txt
if not exist "%sPath%" echo.SORRY, PASSWORD NO VALID, press any key for exit& pause >nul & exit b /2
for %%i in ("%sPath%") do if "%%~zi" equ "0" echo.SORRY, PASSWORD NO VALID, press any key for exit& pause >nul & exit b /3
for /f "usebackq delims==" %%i in ("%sPath%") do set sPassword=%%i&& goto :Break
:Break
set /p sInPassword=Enter password:
if "%sPassword%" neq "%sInPassword%" exit /b 1
ping 127.0.0.1
pause
endlocal
exit /b 0
registeruser1
09-05-2010, 21:49
...Благодарю, работает.! )
P.s.
Я знаю что cmd не поддерживает *** звездочки, а можно как-нибудь скрыть ввод паролей в консоль?
Что бы он команды введенные с клавы понимал, но просто не показывал их...
И еще, весь этот код будет на vista и 7-ке работать? Сам на XP сижу, пока не переходил еще, да и под рукой их нет - не могу проверить...
Спасибо за помощь...
С уважением...
Я тоже к этой темке прилпну :)
Меня интересуют чуток попроще.
Есть интернет соединение по РРРОЕ, иногда бывает такое, что соединение есть, а интернета и пинга нет.
Задача такова, что надо просто разорвать соединение, если нет пинга
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.