Скрипт для запуска traceroute при сбое непрерывного пинга, вывод в журнал - PullRequest
6 голосов
/ 26 июля 2011

Я хочу постоянно пинговать свой домашний общедоступный IP-адрес, и, если пинг не удается, автоматически выполнить трассировку, чтобы увидеть, где происходит сбой.

Я пытался следить за комментариями, сделанными здесь:

http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/efc97c66-60a6-4fd7-8be4-4b454d040ce5

Было бы предпочтительнее совместимость с Windows, лучше всего использовать bat или vbs.

Из любой точки Интернета я потеряю соединение с домашней сетью. С работы я начал пинговать, и когда он падает, я выполняю трассировку, и она не проходит до того, как добирается до моего IP.

Мне нужен файл журнала, чтобы доказать, что это не мой модем, не маршрутизатор или компьютер.

Ответы [ 5 ]

8 голосов
/ 27 июля 2011
@echo off
set Address=google.com
:Loop
PING -n 5 127.0.0.1>nul
echo Pinging %Address%
%SystemRoot%\system32\ping.exe -n 1 %Address% | %SystemRoot%\system32\find.exe "TTL=" > NUL >> C:\pingtest\logfile.log
if %ERRORLEVEL% EQU 0 goto :Loop
echo Trace route %Address% at %date% %time% >> C:\pingtest\logfile.log
tracert %Address% >> C:\pingtest\logfile.log
goto Loop

Это то, чем я закончил, если кому-то еще это понадобится. По сути, «Ping -n 127.0.0.1> Nul» состоит в том, чтобы добавить 5-секундный счетчик, чтобы он проверял пункт назначения каждые 5 секунд, 5 можно изменить на любое необходимое значение.

В Windows 7 есть такая проблема, когда пинг может привести к чему-то вроде «ответ от 192.168.1.5: узел назначения недоступен». Таким образом, вместо ошибки он получает ответ от себя, а не от уровня ошибки 1. Вместо того, чтобы искать Уровень ошибки 1, я выбираю поиск результатов для TTL с "% SystemRoot% \ system32 \ ping.exe -n 1% Address% |% SystemRoot% \ system32 \ find.exe" TTL = "> NUL"

Во всяком случае, я уверен, что другие ответы здесь были очень похожи и, возможно, сработали, поэтому я оцениваю их, но отмечаю это как ответ.

Спасибо всем!

2 голосов
/ 12 августа 2014
@echo off
set Address=www.google.com
set LogDir=C:\pingtest
md %LogDir%
%SystemRoot%\explorer.exe "%LogDir%"
echo PingTest script to monitor network connection.  Control-C to exit.
echo Tests connection by pinging %Address%.  Logs to %LogDir%\logfile.log.
echo %date% %time% Initial tracert (trace route) to %Address% >> %LogDir%\logfile.log
tracert %Address% >> %LogDir%\logfile.log
:Loop
REM  5 second delay
PING -n 5 -w 1 127.0.0.1>nul
echo %date% %time% Pinging %Address%
echo %date% %time% Pinging %Address% >> %LogDir%\logfile.log
%SystemRoot%\system32\ping.exe -n 1 %Address% | %SystemRoot%\system32\find.exe "TTL=" > NUL
if %ERRORLEVEL% EQU 0 goto :Loop
echo %date% %time% PING ERROR - Tracing route to %Address%
echo %date% %time% PING ERROR - Tracing route to %Address% >> %LogDir%\logfile.log
tracert %Address% >> %LogDir%\logfile.log
goto Loop
1 голос
/ 26 июля 2011
:LOOP
FOR /F "usebackq tokens=1" %%F IN (`ping localhost -n 1 -w 1 ^| find "Request"`) DO (
  IF "%%F"=="Request" (
    tracert localhost
  )
)>>log.txt
FOR /F "usebackq tokens=1-4 delims=:." %%G IN (`echo %time%`) DO IF %G%H GTR 1400 GOTO:EOF
GOTO LOOP

В основном, эти состояния делают ping, если он находит строку, содержащую экземпляр слова Request (которое появляется только если вы не можете пропинговать адрес), выполнить tracert.Переключатели -n и -w в PING сообщают, что он прыгает только один раз и через 1 секунду после ожидания ответа не происходит.Это прекрасно, если вы пингуете свой локальный хост.Второе утверждение FOR должно иметь точку остановки.Измените 1400 на время, которое вы хотите остановить для сценария (конечно, в военное время).

1 голос
/ 26 июля 2011

Вы можете создать простой пакетный файл, который пробует эхо-запрос, а в случае неудачи выполняет трассировку, например:

setlocal
set host=www.bigpond.com
set logfile=nettest.log
echo %date% %time%>>%logfile%
ping %host%>>%logfile%
if ERRORLEVEL 1 tracert %host%>>%logfile
endlocal

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

В качестве альтернативы вы можете включить цикл со сном.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1001* * * * * * * * * * 1

0 голосов
/ 11 ноября 2016

Я только что искал то же самое, чтобы выяснить, почему VPN продолжает падать на проводном соединении, использовал одно из предложенных выше пакетных файлов, и это было здорово. Также нашел здесь симпатичное маленькое Java-приложение, которое упаковывает его для вас. Монитор подключения к Интернету

Прост в использовании и делает работу :-)

...