Cкрипт мониторинга доступности хоста с записью в лог.

Пятница, 4 ноября 2016 г.
Рубрика: Познавательное -> В помощь сисадмину
Метки: | | | | |
Просмотров: 26170
Подписаться на комментарии по RSS

Скрипт сохраняет результат работы команды ping в лог-файл c записью даты и времени на каждый пакет, а если хост не доступен пишет "Inaccessible"

Результат работы скрипта:

16:31:26 192.168.11.111: число байт=32 время<1мс TTL=63
16:31:31 Inaccessible!..
16:31:32 192.168.11.111: число байт=32 время<1мс TTL=63
16:31:37 Inaccessible!..
16:31:42 Inaccessible!..
16:31:43 192.168.11.111: число байт=32 время<1мс TTL=63
16:31:48 Inaccessible!..
16:31:49 192.168.11.111: число байт=32 время<1мс TTL=63
16:31:54 Inaccessible!..
16:31:55 192.168.11.111: число байт=32 время<1мс TTL=63
16:32:00 Inaccessible!..
16:32:01 192.168.11.111: число байт=32 время<1мс TTL=63

Переменные:

conCheckInterval = 10000: равно 10 секундам, кому надо можно поиграть с увеличение интервала

conHost = "ХХХ.ХХХ.ХХХ.ХХХ" - указываем наш проверяемый хост

Код скрипта:

option explicit
' conHost -- адрес хоста для слежения
' conCheckInterval -- временной интервал - запуск cscript //nologo pingtime.vbs>pingtime.log
const conHost = "ХХХ.ХХХ.ХХХ.ХХХ", conCheckInterval = 10000
' создаём объект:
dim soWshShell : set soWshShell = CreateObject("WScript.Shell")
WScript.Quit Main()
function WriteLog(strText)
WScript.Stdout.WriteLine FormatDateTime(Time(), vbLongTime) & " " & strText
end function
function GetHostStatus(strHost)
dim oPing : set oPing = soWshShell.Exec("ping -n 1 " & strHost)
dim strOut : strOut = ""
do
WScript.Sleep 100
if not oPing.Stdout.AtEndOfStream then
strOut = strOut & oPing.Stdout.ReadAll
end if
loop until oPing.Status = 1
dim oRegExp : set oRegExp = new RegExp
oRegExp.IgnoreCase = true
oRegExp.Pattern = "[^ ]+:.+TTL=[^\r\n]+"
dim oMatches : set oMatches = oRegExp.Execute(strOut)
if oMatches.Count > 0 then
GetHostStatus = oMatches(0).Value
else
GetHostStatus = "Inaccessible!.."
end if
end function
function Main()
do
WriteLog(GetHostStatus(conHost))
WScript.Sleep(conCheckInterval)
loop
end function

Запуск скрипта из консоли:

Создается лог-файл и вся информация пишется туда, если файл PingTime.log существует, то он перезаписывается

cScript PingTime.vbs>PingTime.log

Новые данные дописывается в конец файла PingTime.log

cScript PingTime.vbs>>PingTime.log

Если кому мешает, можно убрать лишнюю информацию в log-файле //NoLogo ( //NoLogo - Prevent logo display: No banner will be shown at execution time).

cScript //nologo PingTime.vbs>PingTime.log
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru pikabu.ru blogger.com liveinternet.ru google.com

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)