Небольшой батник для проверки хоста ping-ом

Все об администрировании рабочих станций Windows 95/98/NT/2000/XP/7/8. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Небольшой батник для проверки хоста ping-ом

Сообщение UncleFather »

Задача:

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

Решение:

  1. Создаем командный файл следующего содержания:

    Спойлер

    Код: Выделить всё

    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 - промежуток времени в миллисекундах, через который нужно проверять доступность тестируемого хоста

    Скачать этот файл:

    PingTest.rar
    (897 байт) 380 скачиваний
  2. Распаковываем скачанный архив, и в bat-файле вносим изменения:

    1. Вместо "HOSTNAME" пишем имя или адрес компьютера, который нужно пинговать

    2. Вместо 10000 указываем необходимое время задержки (в миллисекундах) между повторениями запросов к тестируемому компьютеру

  3. Запускаем исправленный bat-файл на эталонном компьютере (то есть на том, с которого будем проверять пинги)

  4. Файл 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

которая определяет именно доступность хоста.

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1503
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

Модификация для проверки нескольких хостов

Сообщение UncleFather »

Модификация командного файла для проверки восьми хостов

Эта модификация приведенного выше командного файла проверяет пинги до восьми заданных хостов FirstHost, SecondHostThirdHost, FourthHost, FifthHost, SixthHost, SeventhHost и EighthHost и записывает удачные попытки в файл PingTestGood.txt, а неудачные - в PingTestBad.txt.

Код:

Код: Выделить всё

@Echo Off
 
Set FirstHost=10.174.1.172
Set SecondHost=10.174.1.120
Set ThirdHost=10.74.148.5
Set FourthHost=10.174.6.51
Set FifthHost=10.174.23.2
Set SixthHost=10.174.2.11
Set SeventhHost=10.174.15.104
Set EighthHost=172.16.85.30
Set CheckHost=%FirstHost%
 
:START
ping -n 1 %FirstHost% > TmpPng
if %errorlevel%==1 (
	Echo „ в : %Date%, ‚६п: %Time%, Result:>>PingTestBad.txt
	for /F "tokens=*" %%i in (TmpPng) do (
		Echo %%i>>PingTestBad.txt
	)
	Echo *******************************************************>>PingTestBad.txt
) Else (
	Echo „ в : %Date%, ‚६п: %Time%, Result:>>PingTestGood.txt
	findstr "TTL=" TmpPng>>PingTestGood.txt
	Echo *******************************************************>>PingTestGood.txt
	)
if %FirstHost%==%CheckHost% (
	Set FirstHost=%SecondHost%
) Else (
	if %FirstHost%==%SecondHost% (
		Set FirstHost=%ThirdHost%
	) Else (
		if %FirstHost%==%ThirdHost% (
			Set FirstHost=%FourthHost%
		) Else (
			if %FirstHost%==%FourthHost% (
				Set FirstHost=%FifthHost%
			) Else (
				if %FirstHost%==%FifthHost% (
					Set FirstHost=%SixthHost%
				) Else (
					if %FirstHost%==%SixthHost% (
						Set FirstHost=%SeventhHost%
					) Else (
						if %FirstHost%==%SeventhHost% (
							Set FirstHost=%EighthHost%
						) Else (
							Set FirstHost=%CheckHost%
							PING -n 1 -w 3000 192.168.253.253 > nul
							)
						)
					)
				)
			)
		)
	)
 
GoTo START
EXIT
Пример файла PingTestGood.txt:

Дата: 11.03.2024, Время: 4:49:10,80, Result:
Ответ от 10.174.1.172: число байт=32 время<1мс TTL=63


Дата: 11.03.2024, Время: 4:49:10,86, Result:
Ответ от 10.174.1.120: число байт=32 время<1мс TTL=63


Дата: 11.03.2024, Время: 4:49:10,94, Result:
Ответ от 10.74.148.5: число байт=32 время=1мс TTL=63


Дата: 11.03.2024, Время: 4:49:11,00, Result:
Ответ от 10.174.6.51: число байт=32 время<1мс TTL=63


Дата: 11.03.2024, Время: 4:49:11,08, Result:
Ответ от 10.174.23.2: число байт=32 время<1мс TTL=249


Дата: 11.03.2024, Время: 4:49:11,14, Result:
Ответ от 10.174.2.11: число байт=32 время=1мс TTL=63


Дата: 11.03.2024, Время: 4:49:11,22, Result:
Ответ от 10.174.15.104: число байт=32 время=1мс TTL=63


Дата: 11.03.2024, Время: 4:49:11,28, Result:
Ответ от 172.16.85.30: число байт=32 время<1мс TTL=64


Пример файла PingTestBad.txt:

Дата: 19.05.2016, Время: 15:43:10,09, Result:
Обмен пакетами с 192.168.2.1 по с 32 байтами данных:
Превышен интервал ожидания для запроса.
Статистика Ping для 192.168.2.1:
Пакетов: отправлено = 1, получено = 0, потеряно = 1
(100% потерь)


Дата: 19.05.2016, Время: 15:43:24,09, Result:
Обмен пакетами с 192.168.2.1 по с 32 байтами данных:
Превышен интервал ожидания для запроса.
Статистика Ping для 192.168.2.1:
Пакетов: отправлено = 1, получено = 0, потеряно = 1
(100% потерь)


Дата: 19.05.2016, Время: 15:43:38,09, Result:
Обмен пакетами с 192.168.2.1 по с 32 байтами данных:
Превышен интервал ожидания для запроса.
Статистика Ping для 192.168.2.1:
Пакетов: отправлено = 1, получено = 0, потеряно = 1
(100% потерь)


Командный файл можно скачать здесь:

PingingHosts.rar
(1.62 КБ) 0 скачиваний

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение

Ответить