Найти в Дзене
Demongr

Логирование PING со временем, выводом на экран и записью в файл, CMD скрипт.

Оглавление

Всем здравствуйте. Столкнулся проблемой с периодической недоступности сервера, просто ping стало не достаточно, решил подготовить скрипт pinglog.cmd. Есть так же скрипт в одну строку без сохранения в файл (см в конце).

Описание скрипта pinglog.cmd

Проверка доступности сервера. Вывод времени и ping на экран и в файл, при недоступности выполняется трассировка. Пинг(p_) и трассировка(t_) сохраняются в разные логи.В лог t_ выводятся параметры сети и маршрутизации. При необходимости параллельно запускаю 2 скрипта 1 на проблемный сервер, второй на ресурс(пр. ya.ru) в интернете, что бы видеть что интернет есть и ресурс доступен.

Вывод на экране скрипта pinglog.cmd
Вывод на экране скрипта pinglog.cmd

Настройка

Скрипт нужно скопировать файл с расширением cmd или bat, например pinglog.cmd.
Задать адрес проверяемого сервера в переменной IP (
set IP=ya.ru).
В
LogFileDir задаётся директория лог файлов, по умолчанию настроено на рабочий стол.
после запуска сформируются на рабочем столе файлы t_текущая дата_адрес сервера.log и t_текущая дата_адрес сервера.log. В файл t_текущая дата_адрес сервера.log запишутся результаты команд
ipconfig /all и route print, при недоступности сервера TRACERT.EXE %IP%. В файл t_текущая дата_адрес сервера.log записывается лог с временем.

файл лога ping со временем
файл лога ping со временем

В файле лога может быть не читабельный текст, нужно сменить кодировку. Я использую Far Manager, в блокноте установить шрифт system или terminal, удобно так же в Notepad++.

Скрипт pinglog.cmd:

@echo off
goto start
------------------------------------
Проверка доступности сервера.
Вывод пинга на экран и в файл, при недоступности выполняется трассировка.
Пинг(p_) и трассировка(t_) сохраняются в разные логи
В лог t_ выводятся параметры сети и маршрутизации
Параметры:
IP - задаётся ip или имя сервера
LogFileDir - папка для формирования логов, например рабочий стол %USERPROFILE%\Desktop\
LogFileName - название лог файла, например дата(разделитель _) и IP: _%CURDATE:~0,2%_%CURDATE:~3,2%_%CURDATE:~6,4%_%IP%.log
pinglog v1.61 Created by Demongr
------------------------------------
:start
set IP=ya.ru
set CURDATE=%date%
set LogFileName=_%CURDATE:~0,2%_%CURDATE:~3,2%_%CURDATE:~6,4%_%IP%.log
set LogFileDir=%USERPROFILE%\Desktop\
ipconfig /all >>%LogFileDir%t%LogFileName%
route print >>%LogFileDir%t%LogFileName%
:begin
if %CURDATE% NEQ %date% (set CURDATE=%date%
set LogFileName=_%CURDATE:~0,2%_%CURDATE:~3,2%_%CURDATE:~6,4%_%IP%.log)
set n="Error"
@for /f "tokens=1*" %%i in ('ping -n 1 %IP% ^| findstr /i "TTL="') do set n="%%i %%j"
@echo %date% %time% %n%
@echo %date% %time% %n% >> %LogFileDir%p%LogFileName%
if %n% == "Error" (@echo %date% %time% %n% >> %LogFileDir%p%LogFileName%
rem запускаем tracert если уже не запущен
Set ProcessName=TRACERT.EXE
TaskList /FI "ImageName EQ TRACERT.EXE" 2>nul| Find /I "TRACERT.EXE" >nul|| Start TRACERT.EXE %IP% >> %LogFileDir%t%LogFileName%
)
ping -n 2 127.0.0.1 > nul
@goto begin

Скрипт ping с временем в одну строку:

for /l %i in (0,0,1) do @cmd /c "echo.|set/p=%TIME:~0,8^%" & ping -n 1 ya.ru | find "TTL" & ping -n 2 localhost > nul