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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Логгирование пинга с временной меткой

Ответить
Настройки темы
Любой язык - [решено] Логгирование пинга с временной меткой

Ветеран


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

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


Изменения
Автор: The_Immortal
Дата: 25-10-2013
Друзья, подкиньте, пожалуйста, скриптик, который записывает время в формате hh:mm:ss (с интервалом в 10 сек) и указывает фразу (желательно такую же, как и в утилите ping), когда заданный хост НЕдоступен.

Т.е. необходимо определять время, когда хост именно не отвечает. Успешный же ответ игнорировать и никуда не записывать.



Спасибо!

UPD: нашел вот такой скрипт
Код: Выделить весь код
option explicit 
' conHost -- адрес хоста для слежения 
' conCheckInterval -- временной интервал 
const conHost = "ya.ru", 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 = "ya.ru недоступен!" 
  end if 
end function 

function Main() 
  do 
    WriteLog(GetHostStatus(conHost)) 
    WScript.Sleep(conCheckInterval) 
  loop 
end function
Переделал его следующим образом:
Код: Выделить весь код
option explicit 
' conHost -- адрес хоста для слежения 
' conCheckInterval -- временной интервал 
const conHost = "ya.ru", conCheckInterval = 10000 

' создаём объект:
dim FSO: set FSO=CreateObject("Scripting.FileSystemObject")
dim file: set file =FSO.CreateTextFile("bad_ping.txt")
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 
    file.WriteLine(FormatDateTime(Time(), vbLongTime) & "   " & "ya.ru недоступен!") 
    GetHostStatus = "Inaccessible!.." 
  end if 
end function 

function Main() 
  do 
    WriteLog(GetHostStatus(conHost)) 
    WScript.Sleep(conCheckInterval) 
  loop 
end function
В bad_ping.txt пишутся исключительно "плохие" пинги. Однако они задаются фразой "ya.ru недоступен!", а хотелось бы, чтобы туда попадало "Превышен интервал ожидания запроса" или "Заданный порт недоступен" и т.п. – именно те фразы, которые возвращает ping.
Такое возможно реализовать?

Отправлено: 11:59, 25-10-2013

 

Новый участник


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

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


Добрый день.
Только сегодня увидел этот топик.
Предлагаю, возможно, более простое решение:

@ECHO OFF
@echo.
rem Пинг первого устройства (192.168.1.1)
date /T >D:\Diagnostic\%date%.txt
time /T >>D:\Diagnostic\%date%.txt
echo Устройство № 1 "IP-adress 192.168.1.1" >>D:\Diagnostic\%date%.txt
C:\windows\system32\ping 192.168.1.1 -n 3
if not errorlevel 1 echo +OK+ >>D:\Diagnostic\%date%.txt
if errorlevel 1 echo -ALARM!!!- >>D:\Diagnostic\%date%.txt

Далее пакетный файл добавляется в назначенное задание с необходимыми интервалами. Вместо фразы -ALARM!!!- пишите, что хотите
Вуаля.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:41, 03-03-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Логгирование пинга с временной меткой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] [MPD5] логгирование внешнего IP-адреса клиента skeletor Программное обеспечение Linux и FreeBSD 1 18-02-2011 14:08
MSFT SQL Server - ISA 2004 Std + SQL Server 2000 SP4 Логгирование Delirium Программирование и базы данных 7 31-07-2009 20:47
Прочее - Нестабильность пинга Bedneo Сетевые технологии 6 08-05-2009 11:45
PowerShell - Логгирование операций с файлами samael82 Скриптовые языки администрирования Windows 3 20-02-2009 05:20
Установка одной временной директории для всех пользователей red_dog Microsoft Windows NT/2000/2003 2 15-12-2006 10:39




 
Переход