Скрипт для проверки доступности соединения методом ping-а, указанного в настройках сервера, и записи результатов проверки в лог-файл.
'---------------------------------------------------------------------- ' ' Copyright (c) All rights reserved.
' ' AUTHOR: tudimon.com ' DATE: 24.08.2011 ' NAME: ping2log.vbs ' ' COMMENT: ' ' Проверка доступности соединения методом ping-а и запись результатов ' проверки в лог-файл ' ' Завершить выполнение скрипта можно прибив в Диспетчере задач процесс ' wscript.exe ' '----------------------------------------------------------------------
compip = "77.88.21.13" ' ip адрес сервера, который будем пинговать LogFilePath = "c:\log.log" ' лог-файл timeout = "30" ' таймаут проверки в секундах
On Error Resume Next
do
Set objShell = CreateObject("WScript.Shell")
' Пингом проверим что сервер доступен Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 2 " & compip) strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "ttl=") Then ' доступен
' пишем лог Set FSO = CreateObject("Scripting.FileSystemObject") Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True) LogFile.WriteLine Now & " " & compip & " доступен" LogFile.Close
Моргающее черное окошко cmd очень неудобно. Поэтому избавимся от него, воспользовавшись Win32_PingStatus class.
Измененный скрипт будет выглядеть так:
'---------------------------------------------------------------------- ' ' Copyright (c) All rights reserved. ' ' ' AUTHOR: tudimon.com ' DATE: 04.10.2011 ' NAME: ping2log_v2.vbs ' ' COMMENT: ' ' Проверка доступности соединения методом ping-а и запись результатов ' проверки в лог-файл ' ' Завершить выполнение скрипта можно прибив в Диспетчере задач процесс ' wscript.exe ' '----------------------------------------------------------------------
compip = "77.88.21.13" ' ip адрес сервера, который будем пинговать LogFilePath = "c:\log.log" ' лог-файл timeout = "30" ' таймаут проверки в секундах
On Error Resume Next
do
If fnPing(compip) = 1 Then ' доступен
' пишем лог Set FSO = CreateObject("Scripting.FileSystemObject") Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True) LogFile.WriteLine Now & " " & compip & " доступен" LogFile.Close
' пишем лог Set FSO = CreateObject("Scripting.FileSystemObject") Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True) LogFile.WriteLine Now & " " & compip & " не доступен" LogFile.Close
'MsgBox compip & " не пингуется. Попробуйте позвонить позднее :) " End If
' заснем на указанное кол-во секунд wscript.sleep timeout*1000
loop
'------------------------------------------------------------------------------- Function fnPing( strHost ) ' fnPing = 0 - не пингуется ' fnPing = 1 - пингуется Dim objPing, objRetStatus Set objPing = GetObject( "winmgmts:{impersonationLevel=impersonate}" ).ExecQuery( "select * from Win32_PingStatus where address = '" & strHost & "'" ) 'http://msdn.microsoft.com/en-us/library/aa394350(VS.85).aspx
For Each objRetStatus in objPing If IsNull( objRetStatus.StatusCode ) or objRetStatus.StatusCode <> 0 Then fnPing = 0 Else fnPing = 1 'ResponseTime - Time elapsed to handle the request. 'fnPing = objRetStatus.ResponseTime End If Next End Function '-------------------------------------------------------------------------------
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Чтобы Вам были доступны все функции Вам необходимо либо зарегистрироваться, либо зайти на сайт под своим именем.
Дмитрий есть какая то ошибка в скрипте, при недоступности ресурса идет запись "доступен" и пинг пишется равным "0". Нельзя ли это исправить, и скажем, если недоступен то пинг указывать скажем 9999 или что еще лучше вообще не указывать ,(частенько когда были запоры в сети был пинг под 3000). Если мониторить сайты в принципе и так понятно, но если речь идет о мониторинге внутри локальной сети, то в ней тоже задержка часто бывает равной 0 и непонятно прошел пинг или нет. Заранее спасибо
Спасибо что реагируете на мои замечания. В последней версии при запуске снова появляется окно с результатами пинга при кажом круге, но не коммандера а виндовса. У меня win xp 32 бита. Проверьте пожалуйста у себя работоспособность последний версии. Спасибо
у меня не работает на w7x64max. в логах 06.12.2011 11:43:01 77.88.21.13 доступен ( мс) нет мс, а так-же при вык инета пишет что апи доступен. И ещё нельзя ли дополнить скрипт данными которые при запуске скрипта писали в доп файл пид процесса который создаёт скрипт. Удобно было бы останавливать скрипт. Пока приходится его глушить так taskkill /IM WScript.exe /F, но если к примеру в работе несколько скриптов.
Orbit, странно. где не пробовал везде работало. попробуй закомментировать строку On Error Resume Next может ошибку выдаст и попробуй попинговать 127.0.0.1, плз pid скорее всего не получится прописать, но посмотрю попозже
http://msdn.microsoft.com/en-us/library/aa394350(VS.85).aspx Win32_PingStatus class The Win32_PingStatus WMI class represents the values returned by the standard ping command. More information about ping can be found in RFC 791.
Starting with Windows Vista, Win32_PingStatus can return data for computers that have both IPv4 addresses and IPv6 addresses.
Windows Server 2003 and Windows XP: Win32_PingStatus only returns data for computers running IPv4. For more information, see IPv6 and IPv4 Support in WMI.
буду счас ноут делать сотруднику - попробую на чистой винде запустить может дело в том что я на всю технику что-нить ставлю (фрэмворки например 2, 3, ява), а ты это не ставишь
на счет того что там нет в описании семерки - ты прав, но это не значит что не будет работать. тем более у меня и на семерке и на 2008 сервере работает будем искать в чем отличие моей семерки от твоей
UAC выключен. Нашел проблему! Сomodo не давал нормально работать скрипту и еще маленький вопрос по .vbs и автоматизации заполнения разных окон но не имеющего отношения к данной теме разрешите?
на примере этого скрипта set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "radmin.exe /connect:192.168.77.101:4899" WScript.Sleep 200 WshShell.AppActivate "Система безопасности Radmin: nas" WScript.Sleep 500 WshShell.SendKeys "admin" WshShell.SendKeys "{TAB}" WshShell.SendKeys "12345" WshShell.SendKeys "{ENTER}" какую команду надо использовать в скрипте перед этой командой WshShell.SendKeys "admin" чтоб запись шла именно в это поле ввода? так сказать идентификатор нужного поля.
попытал тут знакомого программиста. говорит нету идентификаторов полей. и он удивился зачем нужно идентифицировать - при активации формы фокус всегда попадает на одно и тоже поле - т.е. нужно просто рассчитать нужное кол-во таб-ов чтобы попасть на нужное поле
бывает так что и не попадает на нужное поле, а так же иногда путает окна. не срабатывает WshShell.AppActivate. есть такая прога AutoIt у неё скрипты типа .vbs. Там же утилита AutoIt Window Info. Так вот она различает поля для ввода по классам. Думал что и здесь есть что то подобное. Кстати последний скрипт не создаёт новый файл при переходе суток.
Дмитрий спасибо за скрипт очень помогает. Скажите может есть возможность добавить звуковую сигнализацию в случае отсутствия пинга. Очень удобно в отслеживании редко возникающих разрывов сети. (трудно все время следить за пингами если нужно отслеживать проблему в реальном времени ) Насколько я понимаю нужно добавить еще одну команду в эту строку LogFile.WriteLine Now & " " & compip & " не доступен". Спасибо
mihai_md2003, извини - опять грохнул камент в горячке борьбы со спамом А всплывающего сообщения недостаточно? Если комментировать строку
'MsgBox compip & " не пингуется. Попробуйте позвонить позднее :) "
то как раз такое окошко будет появляться на экране.
Для писка через системный динамик нужно после этой строки добавить две:
Спасибо за дополнение. Так будет намного удобнее мониторить глюки. Теперь можно включить и заниматься своими делами, а звуковая синализация укажет если есть проблемы.
Доброго времени суток. Я только начал изучать VBS, хотел поделиться своей небольшой модернизвцией вашего скрипта, но к сожалению у вас установлено ограничение на длину комментариев и не получается опубликовать что я изменил.
ICQ:
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Группа: Администраторы
Регистрация: 17.07.2008
Статус:
вы правы насчет записи отклика - подумаю над эти