UncleFather » 12 мар 2013 12:19, Вт
Задача:
Необходимо проверять доступность заданного компьютера (узла сети, хоста) командой 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 ничего записываться не будет.
Дата: 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),
Примечание 2:
Заметим, что команда
проверяет успешность выполнения самой команды «ping». В случае, если ip-адрес хоста удастся определить, даже если хост недоступен, такая команда ошибки не выдаст, в отличие от команды
которая определяет именно доступность хоста.
[b][size=150]Задача:[/size][/b]
Необходимо проверять доступность заданного компьютера (узла сети, хоста) командой [b][i]ping [/i][/b]и, если компьютер недоступен, то заносить дату, время и результат пинга в файл.
[b][size=150]Решение:[/size][/b]
[list=1][*] Создаем командный файл следующего содержания:
[spoiler][code]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[/code][/spoiler]
Здесь "HOSTNAME" - это имя или адрес компьютера, который нужно пинговать
10000 - промежуток времени в миллисекундах, через который нужно проверять доступность тестируемого хоста
Скачать этот файл: [attachment=0]PingTest.rar[/attachment]
[*] Распаковываем скачанный архив, и в bat-файле вносим изменения:
[list=1][*] Вместо "HOSTNAME" пишем имя или адрес компьютера, который нужно пинговать
[*] Вместо 10000 указываем необходимое время задержки (в миллисекундах) между повторениями запросов к тестируемому компьютеру[/list]
[*] Запускаем исправленный bat-файл на эталонном компьютере (то есть на том, с которого будем проверять пинги)
[*] Файл [b][i]PingTest.bat[/i][/b] должен быть запущен постоянно на время тестирования. Если тестируемый компьютер перестанет быть доступным, то в папке, откуда запущен [b][i]PingTest.bat[/i][/b], создастся текстовый файл [b][i]PingTest.txt[/i][/b], в который будут записываться ошибки Если ошибок нет, то в [b][i]PingTest.txt[/i][/b] ничего записываться не будет.
[spoiler title=Пример файла PingTest.txt:][quote]Дата: 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% потерь)
*******************************************************
[/quote][/spoiler][/list]
[hr][/hr]
[b][size=120]Примечание 1:[/size][/b]
В командном файле задержка в 10 секунд обеспечивается командой ping, в параметрах которой указано, что нужно запрашивать несуществующий хост (192.168.253.253), 1 (один) раз (-n 1), с таймаутом (максимальным временем ожидания ответа) 10000 миллисекунд = 10 секунд (-w 10000),
[code]PING -n 1 -w 10000 192.168.253.253 > nul[/code]
[hr][/hr]
[b][size=120]Примечание 2:[/size][/b]
Заметим, что команда
[code]ping -n 1 HOSTNAME > TmpPng[/code]
проверяет успешность выполнения самой команды «ping». В случае, если ip-адрес хоста удастся определить, даже если хост недоступен, такая команда ошибки не выдаст, в отличие от команды
[code]ping -n 1 HOSTNAME | find "TTL=" > TmpPng[/code]
которая определяет именно [b][i][size=120]доступность хоста[/size][/i][/b].