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

Пятница, 4 ноября 2016 г.
Рубрика: Познавательное -> В помощь сисадмину
Метки: | | | | |
Просмотров: 1573
Подписаться на комментарии по 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 myspace.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com

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

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

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

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

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

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