Имя пользователя:
Пароль:
 

Название темы: [решено] Ping раз в минуту
Показать сообщение отдельно

Старожил


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

Профиль | Отправить 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

Название темы: [решено] Ping раз в минуту