|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Ping раз в минуту |
|
|
CMD/BAT - [решено] Ping раз в минуту
|
Новый участник Сообщения: 16 |
Профиль | Отправить PM | Цитировать помогите в написании batch файла для одинарного запроса pingа раз в минуту в течении 9 часов
|
|
Отправлено: 23:57, 15-03-2010 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Держи. Как ты и просил, раз в минуту пингует одиночным запросом удаленный компьютер. Для работы нужна консольная версия утилиты NirCmd (nc.exe) В начале устанавливаешь переменные - подставь нужные тебе числа. От себя добавил счетчик пингов и количество оставшегося до завершения времени. Если не секрет, для чего тебе такой скрипт?
@echo off rem Установка общего времени работы (в минутах) set time=540 rem Установка интервала срабатывания (в минутах) set frequency=1 rem Установка IP set ip=127.0.0.1 rem Перевод величин из минут в милисекунды и ввод поправки на продолжительность одиночного пинга set /A time_ms=time*60000 set /A fq_ms=frequency*60000-2000 set /A remain=time_ms :loop rem Цикл пинга с убывающим счетчиком времени set /A remain=remain-fq_ms if %remain% LEQ 0 goto :EOF set /A c_ping=c_ping+1 ping -n 1 %ip%>nul set /A r_tmm=remain/60000+1 set /A r_tmh=r_tmm/60 cls echo Пинг ^#%c_ping%. Осталось: %r_tmm% минут (%r_tmh% часов) nc wait %fq_ms% goto loop |
Отправлено: 22:26, 24-03-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 727
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:27, 25-03-2010 | #3 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать слов нет, одни эмоции:
ping -n 360 -w 60000 узел |
Отправлено: 17:21, 25-03-2010 | #4 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать 2Busla
Цитата:
читайте хелп внимательнее товарисч Busla |
||
Отправлено: 17:33, 25-03-2010 | #5 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать В декабре я кому-то писал похожий скриптик. Смысл такой, что узел пингуется время-от времени (по-дефолту каждые 10 сек), работает на бэкграунде и кидает в лог время, когда узел был недоступен. Есть несколько ключей для запуска и краткий хелп по ним. Дефолтные значения также легко редактируются.
Из минусов - несколько одновременных запусков могут привести к вываливанию с ошибкой. @Echo off SetLocal EnableExtensions rem SetLocal EnableDelayedExpansion rem Флаг подпроцесса. Устанавливается в режиме Multi. Запуск батника с параметром "." запрещен! if "%1"=="." Goto Once set Name=%~dpn0 set Ext=%~x0 rem Значения "по-умолчанию" set IP=ya.ru set Wait=10 set LogFile=%Name%.txt set Log=SingleLog rem set Log=MultiLog rem set Mode=Once set Mode=Multi rem Чтение и обработка параметров. Порядок любой, возможны повторы. :ParamChk cls rem Инфа для сообщения о неправильном параметре. Если все ОК, то инфа пропадет. if "%1"=="" Goto %Mode% Echo Error! Wrong Parameter! Echo. Echo Use: %Name% [/W nnn] [/IP addr] [/O] [/i] [/S] [/M] Echo. Echo /W - Wait for nnn Seconds between Tests Echo /IP - Destination Address (IP or FQDN). * If Address FQDN (like ya.ru) - Test can fail on DNS Echo /O or /I - Instance: Once or Infinite (use TaskManager to Break CMD service) Echo /S or /M - LogFile Name: Single (ChkNet.txt) or Multi (Based on Date, Ex: ChkNet_2009-12-23.txt) Goto P%1 :P/W if not "%2"=="" set Wait=%2 shift & shift & goto ParamChk :P/IP if not "%2"=="" set IP=%2 shift & shift & goto ParamChk :P/O set Mode=Once shift & goto ParamChk :P/I set Mode=Multi shift & goto ParamChk :P/S set Log=SingleLog shift & goto ParamChk :P/M set Log=MultiLog shift & goto ParamChk :Once rem дата/время в виде yyyy-mm-dd_hh-mm-ss - очень удобно для имен файлов и логов set tm=%time::=-% set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%_%tm:~0,-3% goto %Log% :MultiLog set LogFile=%Name%_%tm:~0,10%.txt :SingleLog ping -n 1 %IP% >nul if errorlevel 1 echo %tm%: %IP%>>%LogFile% if %Mode%==Once exit ping -n %Wait% 127.0.0.1 >nul Goto Once :Multi start /b /low %Name%%Ext% . |
------- Отправлено: 17:07, 30-03-2010 | #6 |
Пользователь Сообщения: 65
|
Профиль | Отправить PM | Цитировать Народ, помогите - есть вот такой примерно, код батника. Т.е. мы пингуем диапазон IP-адрессов (нужно пинговать в цикле)
при достижении определенного числа не пингуемого узла/узлов, записывать его IP в лог и преустанавливать соединение. У меня почему-то не отрабатывает If ErrorLevel 1 - т.е. отрабатывает только по последнему IP-адрессу (если последний IP не пингуется, то нормально, а если предпоследний не пингуется а последний пигуется, то он пропускается ). Наверное причина в параметре %1. А If ErrorLevel 0 (set /a cWork=%cWork%+1 && goto :EOF) счётчик меняет, но не возвращается обратно в цикл Call Что я тут делаю не так? @Echo Off :PING Set /a cWork=0 Set /a err=0 For /l %%a In (70,1,76) Do Call :CompWork 10.1.5.%%a If %err%==30 goto END If %cWork%==50 goto PING GoTo :EOF :CompWork Echo Ping %1 Ping -n 2 %1 >Nul If ErrorLevel 0 (set /a cWork=%cWork%+1 && goto :EOF) If ErrorLevel 1 (set /a err=%err%+1 && goto :EOF) :END rasdial people /disconnect rasdial people admin admin goto PING |
Последний раз редактировалось Smith_Wesson, 28-04-2011 в 13:50. Причина: задвоение Отправлено: 13:32, 28-04-2011 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Smith_Wesson:
|
|
Отправлено: 18:20, 28-04-2011 | #8 |
Пользователь Сообщения: 65
|
Профиль | Отправить PM | Цитировать нет. Не помогает... Я вообще не понимаю, как может отработать goto :EOF если самой метки :EOF в батнике нет!
P.S. батник не мой (нашел в Инете и решил приспособить под свои нужды) - но, не работает... |
Отправлено: 18:43, 28-04-2011 | #9 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Smith_Wesson:
P.S. в исходном скрипте была ошибка в строке: условие выполняется ВСЕГДА, из справки к IF: |
|
Отправлено: 07:04, 29-04-2011 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Происходит автоматический выход из системы каждую минуту | 06072009 | Microsoft Windows Vista | 2 | 01-04-2011 15:48 | |
Разное - Принетер печатает раз через раз. | Solker | Microsoft Windows 2000/XP | 2 | 23-04-2009 10:02 | |
Flash - Corasair Survivor 8gb. Отваливается через минуту. | advin | Накопители (SSD, HDD, USB Flash) | 5 | 29-03-2009 14:34 | |
Wireless - Ровно каждую минуту пинг вырастает до 1к-2к | DominatorBlazer | Сетевое оборудование | 0 | 10-02-2009 19:38 | |
Интернет - [решено] После соединении с инетом комп на минуту подвисает | fugi1 | Microsoft Windows 2000/XP | 3 | 04-10-2008 09:41 |
|