Небольшой батник для проверки хоста ping-ом
Задача:
Необходимо проверять доступность заданного компьютера (узла сети, хоста) командой ping и, если компьютер недоступен, то заносить дату, время и результат пинга в файл.
Решение:
-
Создаем командный файл следующего содержания:
Спойлер
Код: Выделить всё
REM Отключаем вывод команд @Echo Off REM Начало бесконечного цикла :START REM Пингуем 1 (один) раз заданный компьютер по имени или адресу, прописанному вместо "HOSTNAME" и помещаем результат выполнения команды во временный файл TmpPng ping -n 1 HOSTNAME | find "TTL=" > TmpPng REM Проверка доступности хоста командой "ping". Если в выводе команды отсутствует строка с временем задержки пинга до искомого хоста, то считаем, что она выполнена с ошибкой, и переходим к выполнению процедуры внутри "IF" if %errorlevel%==1 ( Rem Дописываем в файл отчета PingTest.txt дату и время текущей записи Echo Дата: %Date%, Время: %Time%, Result:>>PingTest.txt Rem Разбираем построчно временный файл TmpPng (с описанием текущей ошибки) for /F "tokens=*" %%i in (TmpPng) do ( Rem Заносим каждую строку с описанием ошибки в файл отчета PingTest.txt под строкой с датой и временем Echo %%i>>PingTest.txt ) Rem Дописываем в файл отчета PingTest.txt строку из звездочек, для наглядности Echo *******************************************************>>PingTest.txt ) Rem Делаем задержку, равную 10000 миллисекунд (10 секунд) перед выполнением новой проверки хоста. Задержка в 10 секунд обеспечивается единичной командой ping несуществующего хоста с указанным максимальным временем ожидания ответа (таймаутом) PING -n 1 -w 10000 192.168.253.253 > nul Rem Возвращаемся в начало бесконечного цикла GoTo START EXIT
Здесь "HOSTNAME" - это имя или адрес компьютера, который нужно пинговать
10000 - промежуток времени в миллисекундах, через который нужно проверять доступность тестируемого хостаСкачать этот файл:
-
Распаковываем скачанный архив, и в bat-файле вносим изменения:
-
Вместо "HOSTNAME" пишем имя или адрес компьютера, который нужно пинговать
-
Вместо 10000 указываем необходимое время задержки (в миллисекундах) между повторениями запросов к тестируемому компьютеру
-
-
Запускаем исправленный bat-файл на эталонном компьютере (то есть на том, с которого будем проверять пинги)
-
Файл PingTest.bat должен быть запущен постоянно на время тестирования. Если тестируемый компьютер перестанет быть доступным, то в папке, откуда запущен PingTest.bat, создастся текстовый файл PingTest.txt, в который будут записываться ошибки Если ошибок нет, то в PingTest.txt ничего записываться не будет.
Пример файла PingTest.txt:
Дата: 12.03.2013, Время: 12:55:58,97, Result:
При проверке связи не удалось обнаружить узел PC01. Проверьте имя узла иповторите попытку.
*******************************************************
Дата: 12.03.2013, Время: 12:56:15,86, Result:
При проверке связи не удалось обнаружить узел PC01. Проверьте имя узла иповторите попытку.
*******************************************************
Дата: 12.03.2013, Время: 12:56:32,86, Result:
При проверке связи не удалось обнаружить узел PC01. Проверьте имя узла иповторите попытку.
*******************************************************
Дата: 12.03.2013, Время: 13:06:39,07, Result:
Режим вывода команд на экран (ECHO) отключен.
Обмен пакетами с 192.168.17.53 по с 32 байт данных:Режим вывода команд на экран (ECHO) отключен.
Превышен интервал ожидания для запроса.Режим вывода команд на экран (ECHO) отключен.
Статистика Ping для 192.168.17.53:Пакетов: отправлено = 1, получено = 0, потеряно = 1
(100% потерь)
*******************************************************
Дата: 12.03.2013, Время: 13:06:54,07, Result:
Режим вывода команд на экран (ECHO) отключен.
Обмен пакетами с 192.168.17.53 по с 32 байт данных:Режим вывода команд на экран (ECHO) отключен.
Превышен интервал ожидания для запроса.Режим вывода команд на экран (ECHO) отключен.
Статистика Ping для 192.168.17.53:Пакетов: отправлено = 1, получено = 0, потеряно = 1
(100% потерь)
*******************************************************
Примечание 1:
В командном файле задержка в 10 секунд обеспечивается командой ping, в параметрах которой указано, что нужно запрашивать несуществующий хост (192.168.253.253), 1 (один) раз (-n 1), с таймаутом (максимальным временем ожидания ответа) 10000 миллисекунд = 10 секунд (-w 10000),
Код: Выделить всё
PING -n 1 -w 10000 192.168.253.253 > nul
Примечание 2:
Заметим, что команда
Код: Выделить всё
ping -n 1 HOSTNAME > TmpPng
проверяет успешность выполнения самой команды «ping». В случае, если ip-адрес хоста удастся определить, даже если хост недоступен, такая команда ошибки не выдаст, в отличие от команды
Код: Выделить всё
ping -n 1 HOSTNAME | find "TTL=" > TmpPng
которая определяет именно доступность хоста.