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

Показать сообщение отдельно

Пользователь


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

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


Цитата Anonymоus:
Вот мое решение, думаю, Вам подойдет. Скрипт периодически (с настраиваемым интервалом, по умолчанию - 15 сек) пингует выбранный хост, отображает статистику - сколько раз смог удачно пропинговать, сколько раз сайт был недоступен, и при любой смене статуса хоста записывает это событие в лог. В логе вы увидите примерно такое:
Код:
Started at [04.08.2011 - 2:39:06]
04.08.2011 - 2:39:20 >> 127.0.0.1 is active
Started at [04.08.2011 - 2:39:46]
04.08.2011 - 2:40:01 >> google.ru is active
04.08.2011 - 2:40:43 >> google.ru is offline
04.08.2011 - 2:41:59 >> google.ru is active
Сам скрипт:
Код:
@Echo Off
:: Anonymous, 2011
Cls
Title Ping2Host
:: Ведение лога
Set Logging=true
:: Таймаут в секундах
Set Timeout=15
Echo.
Set /P Host= Enter IP or hostname: ^>
Cls&Set Total=0&Set Succes=0&Set Fail=0&Set Status=Not checked yet&Set StartTime=[%date% - %time:~-0,8%]
Set /A Sleep=(Timeout-1)*1000
If %Logging%==true (Set LogFile="%~n0.log") Else (Set LogFile=nul)
Echo.>>%LogFile%&Echo Started at %StartTime%>>%LogFile%
:ShowStats
Call :Stats
.\bin\nc.exe wait %Sleep%
Ping -n 1 -w 1000 -l 1024 %Host%>nul
If %ErrorLevel% GTR 0 (
Set /A Fail+=1
If Not "%Status%"=="Offline" (Echo %date% - %time:~-0,8% ^>^> %Host% is offline>>%LogFile%)
Set Status=Offline
Title Offline [%Host%] - Ping2Host
) Else (
Set /A Succes+=1
If Not "%Status%"=="Online" (Echo %date% - %time:~-0,8% ^>^> %Host% is active>>%LogFile%)
Set Status=Online
Title Online [%Host%] - Ping2Host
)
GoTo ShowStats
:Stats
Cls
Echo.
Echo Started at: %StartTime%
Echo.
Echo Target: %Host%
Echo Online: %Succes% times, Offline: %Fail% times
Echo Current status: [%date% - %time:~-0,8%] - %Status%
Echo.
Exit /B
Для его правильной работы нужно скачать NirCmd (консольная версия), переименовать exe-файл в nc.exe, создать рядом со скриптом директорию bin и положить туда nc.exe. »
скрипт тоже отличный, только вот потестил я его около часа, нашел один недостаток: файлик обновляет при первом запуске скрипта строчкой:
Код: Выделить весь код
04.08.2011 - 10:32:56 >> google.com is active
И на этом все, даже после принудительного завершения срипта через ctrl+c файлик не обновляется. Обновление происходит только во время разрыва связи. Оно конечно и понятно с одной стороны: зачем захламлять лог-файл лишними записями. Но было бы удобно, чтобы логи писались хотя бы при выходе из скрипта, что-то типа:
Код: Выделить весь код
04.08.2011 - 10:32:56 >> google.com is active
***тут я завершаю работу скрипта***
04.08.2011 - 10:55:51 >> google.com is active
Цитата Dzirt2005:
Вариант с внешней программой не устраивает? Например, с mtee : »
да внешняя программулина не проблема. Скачал этот mtee. чет не пойму как он работает. Его надо в директорию виндоус кинуть рядом с cmd?

Отправлено: 10:55, 04-08-2011 | #11