|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] помогите написать скрипт для перезагрузки модема |
|
|
CMD/BAT - [решено] помогите написать скрипт для перезагрузки модема
|
Новый участник Сообщения: 44 |
Профиль | Отправить PM | Цитировать
мне нужен скриптик, который будт работать по вот этому алгоритму:
у1- проверка есть ли пинг до внешнего ресурса, например ya.ru у2- проверка глобальной переменной, не знаю, наверно она должна быть в файле, если переменная N>=3 то О2 - выполнить команду ( в моем случае netsh interface set interface name="inet" admin=DISABLED ,тут нужна будет пауза, чтобы обновился маршрут, секунд 5-10 О3 - запустить прогу sendmail О1 - запустить прогу которая подключится через телнет к роутеру и ребутнет его ) О4- обнулить глобальную переменную N N++ увеличить глобальную переменную на 1 А то глючный модем уже задолбал ( Зарание спс! |
|
Отправлено: 12:26, 20-08-2012 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать yanus74, не нужна тут глобальная переменная, я так понял, что вам нужно после 3 перезагрузок модема и неудачном пинге обновить маршрут и отправить письмо, что все плохо.
Красные echo для отладки, удалите в конечном варианте |
Отправлено: 15:26, 20-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать спасибо
скрипт будет запускаться 1 раз в 30 минут, как он будет запоминать значение N ? просто идея такая, что скрипт проверил, инета нету, перезагрузил, прошло пол часа, проверил, нету ......и на четвертый раз, когда N = 3 , он отключает этот интерфейс, и керио меняет маршрут на другой интерфейс, т.к. этот не доступен, а скрипт отправляет уведомление, что там опять какето фигня с модемом ( |
Отправлено: 16:58, 20-08-2012 | #3 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата yanus74:
@Echo Off SetLocal Set N=0 (0<count Set /P "N=") 2>nul Ping ya.ru -n 2 1>nul&&Del /F /Q count 2>nul&&Exit /B 0 If %N% EQU 3 ( Echo:netsh interface set interface name="inet" admin=DISABLED Echo:ping 127.0.0.1 -n 6 1>nul Echo:sendmail ) Else ( Echo:Start /Wait "" "прога через телнет" Set /A N+=1 Call Echo:%%N%%>count ) |
|
Отправлено: 18:24, 20-08-2012 | #4 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать |
|
Последний раз редактировалось yanus74, 21-08-2012 в 09:19. Отправлено: 07:49, 21-08-2012 | #5 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата yanus74:
|
|
Отправлено: 14:47, 21-08-2012 | #6 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
выключил на модеме инет ( пинг возвращает заданный узел не доступен) запустил скрипт, и ничего не произошло, ни какого вывода не было, добавил везде эхо) и получил результат выше правда я немного модифицировал скрипт, добавил в начале могло ли это повлиять на выполнение скрипта? вот лог выполнения скрипта: D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat D:\programs\bat>D:\programs\bat\1.bat Start /Wait "" "D:\programs\bat\autoTln.bat" D:\programs\bat>D:\programs\bat\1.bat - тут я поменял параметр, т.к. первый не сработал D:\programs\bat\autoTln.bat D:\programs\bat> Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. программа вредная, требует чтоб ее запускали из ее директории, иначе файлы свои найти не может сенд мэил тоже бат файлом запускаю, но там одна строка, путь до программы, программа и ключи |
|
Последний раз редактировалось yanus74, 21-08-2012 в 16:16. Отправлено: 15:54, 21-08-2012 | #7 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать вроде разобрался , щас еще пару раз проверю
как то через раз срабатывает, не могу понять в чем дело, запускаю, запускаю скрипт, потом раза с 10го, он срабатывает, запускается батник ( открывается новое окно) пишет: закрывается, и в окне, в котором я запускал скрипт больше ничего не выводит C:\Documents and Settings\Администратор>D:\programs\bat\1.bat C:\Documents and Settings\Администратор> не понятно @Echo Off SetLocal Set N=0 (0<count Set /P "N=") 2>nul Ping ya.ru -n 2 1>nul&&Del /F /Q count 2>nul&&Exit /B 0 If %N% EQU 3 ( Echo:netsh interface set interface name="Guest" admin=DISABLED Echo:ping 127.0.0.1 -n 6 1>nul Echo:D:\programs\bat\sandmail.bat ) Else ( Start /Wait "" "D:\programs\bat\autoTln.bat" Set /A N+=1 Call Echo:%%N%%>count ) |
Последний раз редактировалось yanus74, 21-08-2012 в 16:52. Отправлено: 16:28, 21-08-2012 | #8 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата yanus74:
Set N=0 - присваиваем переменной N значение, равное 0. Это наша глобальная переменная. (0<count Set /P "N=") 2>nul - ключ /P команды Set предназначен для ручного задания значения переменной N, т.е. в консоли пользователь пишет значение и нажимает Enter (читай - символ перевода строки). Но вместо ручного ввода в консоль пишется содержимое файла count, который будет хранить значение нашей глобальной переменной N, причем только первая строка, т.к. строки в текстовых файлах заканчиваются символом перевода. Ping ya.ru -n 2 1>nul&&Del /F /Q count 2>nul&&Exit /B 0 - пинг сайта. Если он удачен, то удаляем файл count. Если файл удалится, то выход из скрипта. Тут нужно немного по-другому написать, а именно Ping ya.ru -n 2 1>nul&&(Del /F /Q count 2>nul&Exit /B 0) Если пинг неудачен, то переменная N сравнивается с числом 3. Если N=3, то смена маршрута, пауза и отправка мыла. Если нет, то реконнект модема, увеличиваем значение N на 1 (Set /A N+=1) и пишем новое значение N в файл count (Call Echo:%%N%%>count). Проставив echo перед командами, можно реально их не запускать, а просто посмотреть в консоли на эти команды. Имитируем разрыв с модемом, приписав к ya.ru, какой-нибудь символ, запустим скрипт (допустим это первый запуск, файла Count еще нет): c:\temp>test.bat Start /Wait "" "прога через телнет" //N=0, в count запишется 1 c:\temp>test.bat Start /Wait "" "прога через телнет" //N=1, в count запишется 2 c:\temp>test.bat Start /Wait "" "прога через телнет" //N=2, в count запишется 3 c:\temp>test.bat netsh interface set interface name="inet" admin=DISABLED //N=3 sendmail c:\temp> Цитата yanus74:
Цитата yanus74:
|
|||
Отправлено: 21:30, 21-08-2012 | #9 |
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать чет он так и не работает, добавил задание на запуск батника, щас вот посмотрел, у модема не было интернета, дождался запуска по расписанию, окно промигнуло,и все, зпрограмма для перезагрузки роутера не открылась, что делаю не так?(
@Echo Off SetLocal Set N=0 (0<count Set /P "N=") 2>nul Ping ya.ru -n 2 1>nul&&Del /F /Q count 2>nul&&Exit /B 0 If %N% EQU 3 ( netsh interface set interface name="Guest" admin=DISABLED ping 127.0.0.1 -n 12 1>nul Start "" /D "D:\programs\nnBackup\sendemail\" /Wait "sendEmail.exe" -f мыло -t мыло -u тема -m Opyat vse slomalos! -s smtp.yandex.ru:25 -xu мыло -xp пароль -o message-charset=windows-1251 -q ) Else ( Start "" /D "D:\programs\bat" /Wait "autoTln.exe" Set /A N+=1 Call Echo:%%N%%>count ) echo:1 test (0<count Set /P "N=") 2>nul echo:2 test Ping ya.ru -n 2 1>nul&&Del /F /Q count 2>nul&&Exit /B 0 echo:3 test C:\Documents and Settings\Администратор>D:\programs\bat\1.bat 1 test 2 test C:\Documents and Settings\Администратор> C:\Documents and Settings\Администратор>ping ya.ru Обмен пакетами с ya.ru [87.250.250.203] с 32 байт данных: Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Ответ от 192.168.10.1: Заданная сеть недоступна. Статистика Ping для 87.250.250.203: Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь) Приблизительное время приема-передачи в мс: Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек C:\Documents and Settings\Администратор> все понятно, условие не верно, пинг возвращает: а эта чтука работает если получено 0 т.е. надо двойную проверку, или, если пакеты не приходят обратно вообще или получаем ответ "Ответ от 192.168.10.1: Заданная сеть недоступна." |
Последний раз редактировалось yanus74, 22-08-2012 в 10:33. Отправлено: 10:18, 22-08-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите написать скрипт | DeGReeS | Microsoft Windows NT/2000/2003 | 12 | 01-06-2012 16:18 | |
Помогите, написать sh скрипт | webinteger | Программирование в *nix | 2 | 17-09-2010 09:01 | |
FreeBSD - Помогите написать скрипт | Stirs | Общий по FreeBSD | 2 | 25-06-2008 02:29 | |
Помогите написать небольшой скрипт | rusGT | Программирование в *nix | 3 | 04-05-2008 22:40 | |
Помогите написать скрипт!!! | Sergei Antoshkin | Вебмастеру | 1 | 13-03-2003 18:22 |
|