1

Тема: CMD/BAT: Выполнение команды, если в файле логов повторяются строки

Здравствуйте, уважаемые форумчане!
Подскажите, пожалуйста.

Есть батник, который пингует хосты и записывает логи пинга в текстовые файлы.
Необходимо доработать его так, чтобы при недоступности узла(хоста) в течении 10 секунд (или через 5 одинаковых строк о неполучениии ответа в логах), выполнялся звук. (программа по выполнению звука есть).

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

2

Re: CMD/BAT: Выполнение команды, если в файле логов повторяются строки

Perec пишет:

Есть батник, который пингует хосты и записывает логи пинга в текстовые файлы.


Ну, и где ж его код?

3

Re: CMD/BAT: Выполнение команды, если в файле логов повторяются строки

Вот таким образом выглядит код.

set YY=%date:~8,2%
set MM=%date:~3,2%
set DD=%date:~0,2%
set DATA=20%YY%-%MM%-%DD%

if not exist F:\tyt\%DATA%\%PINGFILE%.txt ( mkdir F:\tyt\%DATA%\%PINGFILE%.txt )
set HOUR=%TIME:~0,2%
set MINUTE=%TIME:~3,2%
set /a DATAREFRESHDAY=DD+3
chcp 855
set PINGFILE=%1
set OUTPUT=F:\tyt\%DATA%\%PINGFILE%.txt
@echo off & cls
echo Host: %1>%OUTPUT%

:pinging
call :cyrtime
if %DAY%==%DATAREFRESHDAY% (del %OUTPUT% & set /a DATAREFRESHDAY=%DATAREFRESHDAY%+3)
<nul set /p strTemp=^%PINGTIME% >>%OUTPUT%
PING -n 1 ^%1 | FIND ^" TTL=^">>%OUTPUT%

IF ERRORLEVEL 1 (SET BG=4F & playsound.exe -SED_alarm & echo  Ping timed out.>>%OUTPUT% ) ELSE (SET BG=2F)
color %BG%
ping -n 2 -l 10 127.0.0.1 >nul
if %BG%==2F (echo ICMP answer received at %PINGTIME% from %1) ELSE (echo ICMP answer not received at %PINGTIME% from %1)

goto pinging
:cyrtime
set DAY=%date:~0,2%
set HR=%TIME:~0,2%
set MIN=%TIME:~3,2%
set SEC=%TIME:~6,2%
set PINGTIME=%DATA% - %HR%:%MIN%:%SEC%
exit /b


В этой строке он выдает звук (приложение playsound.exe)    -   
IF ERRORLEVEL 1 (SET BG=4F & playsound.exe -SED_alarm & echo  Ping timed out.>>%OUTPUT% ) ELSE (SET BG=2F)

получается каждый раз звучит при пинге(неполучении ответа), а нужно, чтобы через несколько неполученных ответов звучал. Например, после пяти.
Спасибо.

4

Re: CMD/BAT: Выполнение команды, если в файле логов повторяются строки

Perec пишет:
if not exist F:\tyt\%DATA%\%PINGFILE%.txt ( mkdir F:\tyt\%DATA%\%PINGFILE%.txt )

Это как?

5

Re: CMD/BAT: Выполнение команды, если в файле логов повторяются строки

Косяк, видимо. Но тут не в этом дело.

6 (изменено: Yury, 2014-12-08 04:42:30)

Re: CMD/BAT: Выполнение команды, если в файле логов повторяются строки

@echo off

set host=aaaaa.com
set "out=ping.log"
set limit=5
set n=
for /f %%i in ('
 mshta "vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(Chr(7))&Close()"
') do set BEL=%%i


:ping

ping -n 1 %host%|>>"%out%" find " TTL="&& (
color 2f
echo ICMP answer received.
set n=
)|| (
>>"%out%" echo Ping timed out.
color 4f
echo ICMP answer not received.
set /a n+=1
)
if "%n%" equ "%limit%" call:error
>nul timeout 1
goto ping


:error

echo %BEL% There are five errors in succession.
echo.
set n=
exit /b