1

Тема: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

Здравствуйте, уважаемые форумчане. Подскажите пожалуйста. Стоит такая задача. Написать батник, который бы читал построчно файл логов: считал количество строк, в которых есть ответ и в которых нет ответа, а затем посчитал среднее значение. И хорошо бы процент потерь.

Файл логов выглядит следующим образом:

Host: 192.168.10.12
2014-11-08 - 12:08:58 Reply from 192.168.10.12: bytes=32 time=5ms TTL=125
2014-11-08 - 12:08:59 Reply from 192.168.10.12: bytes=32 time=4ms TTL=125
2014-11-08 - 12:09:01 Reply from 192.168.10.12: bytes=32 time=9ms TTL=125
2014-11-08 - 12:09:10 Reply from 192.168.10.12: bytes=32 time=4ms TTL=125
2014-11-08 - 12:09:11 Reply from 192.168.10.12: bytes=32 time=6ms TTL=125
2014-11-08 - 12:09:12 Ping timed out.
2014-11-08 - 12:09:13 Ping timed out.
2014-11-08 - 12:09:14 Ping timed out.
2014-11-08 - 12:09:28 Ping timed out.
2014-11-08 - 12:09:33 Ping timed out.
2014-11-08 - 12:09:38 Ping timed out.
2014-11-08 - 12:09:43 Ping timed out.
2014-11-08 - 12:09:48 Ping timed out.
2014-11-08 - 12:09:53 Reply from 192.168.10.12: bytes=32 time=5ms TTL=125
2014-11-08 - 12:09:54 Reply from 192.168.10.12: bytes=32 time=35ms TTL=125
2014-11-08 - 12:09:55 Reply from 192.168.10.12: bytes=32 time=51ms TTL=125

Благодарю за помощь.

2

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

посчитал среднее значение

среднее значение чего?


:: количество прошедших пингов
find /c "Reply from" <filename

:: количество потерянных пингов
find /c "Ping timed" <filename
( 2 * b ) || ! ( 2 * b )

3

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

Здравствуйте, Rumata.

Среднее значение прохождения пакетов. В процентах если возможно.

4

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

@(for /f %%i in ('^<"example.log" find /c /v ""') do @for /f %%j in ('^<"example.log" find /c "Reply from "') do @for /f %%k in ('set /a %%i-%%j-1') do @for /f %%l in ('set /a %%k*100/^(%%i-1^)') do @echo Received = %%j, Lost = %%k ^(%%l%% loss^).)& pause>nul& exit /b

5

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

Благодарю, Yury!

А как сделать, чтобы задавать определенный промежуток по дате(времени)?
Допустим, задаю промежуток от     2014-11-08 - 12:09:01   до    2014-11-08 - 12:09:54     , и чтобы в этом диапазоне посчитал процент потерь.

6

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

Perec пишет:

А как сделать, чтобы задавать определенный промежуток по дате(времени)?

Допустим, задаю промежуток от     2014-11-08 - 12:09:01   до    2014-11-08 - 12:09:54     , и чтобы в этом диапазоне посчитал процент потерь.

Используйте LogParser.

7

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

alexii, Спасибо!

А никак средствами CMD не справиться?

8

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

@echo off

for /f "usebackq tokens=1,3,4" %%i in ("example.log") do (
 if "%%i - %%j" geq "2014-11-08 - 12:09:01" (
  if "%%i - %%j" leq "2014-11-08 - 12:09:54" (
   if %%k==Reply (
    set /a x+=1
    ) else (
    set /a y+=1
    )
   )
  )
 )

for /f %%i in ('set /a %y%*100/^(%x%+%y%^)') do (
 echo Received = %x%, Lost = %y% ^(%%i%% loss^).
 )

pause>nul
exit /b

9

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

Yury, благодарю Вас! Вы мастер!

10

Re: CMD/BAT: Чтение из файла логов пинга хоста и вывод среднего значения

Perec пишет:

А никак средствами CMD не справиться?

В данном случае — с лексикографическим форматом даты — теоретически возможно. Что и показал коллега Yury.