X 분마다 핑을 수행하고 응답 시간을 확인하려면 어떻게해야합니까?


26

현재 대기업에서 일하고 있으며 심각한 대기 시간 문제가 있습니다. 이것은 공정 제어 시스템에서 발생하며 수용 할 수 없습니다 (명령을 시작하기 전에 2 분이 걸리는 밸브 열기)

네트워크 팀이 "모든 것이 네트워크에 문제가 없다"고 말할 때 다시 확인하고 싶습니다. 그래서 서버를 핑하고 결과를 텍스트 파일에 쓰는 루프를 만들고 싶습니다.

저는 배치 전문가가 아니지만이 코드가 올바른 것으로 생각하십니까?

@ECHO OFF

:LOOPSTART

time /T
ping xxx.xx.x.x  -t >> filename.txt
sleep -m 3000

GOTO LOOPSTART


@Zoredache 프로세스 제어 컴퓨터에 이러한 소프트웨어를 설치할 수 없습니다 : dev.pulsed.net/wp/?p=31
Waza_Be

"win XP Professional"은 DOS가 아닙니다.
grawity

답변:


31

나에게는 잘 보이지만 IP를 지속적으로 핑하고 싶다면 반복 할 필요가 없습니다. 그런 다음 간단히 다음과 같이 할 수 있습니다.

@ECHO OFF
set IPADDRESS=x.x.x.x
ping %IPADDRESS% -t >> filename.txt

X 분마다 핑을하려면 루프를 사용하십시오.

@ECHO OFF
set IPADDRESS=x.x.x.x
set INTERVAL=60
:PINGINTERVAL
ping %IPADDRESS% -n 1 >> filename.txt
timeout %INTERVAL%
GOTO PINGINTERVAL

보시다시피 sleep명령을 로 바꿨습니다 timeout. sleep일부 시스템에서는 항상 사용 가능한 것은 아니지만 timeout일반적으로 사용 가능 하기 때문 입니다.

누락 sleep또는 timeout시스템에 명령? 걱정하지 마십시오. timeout다음 핵으로 교체하십시오 .

@ping 127.0.0.1 -n %INTERVAL% > nul

이 해킹은 단순히 로컬 주소를 핑 (ping)하며, 즉시 응답하므로이를 사용 하여 실행 지연 을 모방 할 수 있습니다 .


시간 초과는 내부 또는 외부 명령으로 인식되지 않습니다
Waza_Be

@ Profete162, 그럼 수면 명령이 있습니까? 그래서, 그냥 교체 timeout와 함께 sleep. 이 작업을 수행하는 Windows 버전은 무엇입니까?
mekwall


1
@ Profete162, 올드 스쿨! :) 해당 명령이 없을 때 사용할 수있는 보조 방법을 추가하겠습니다.
mekwall

3

단일 라이너 솔루션의 경우 다음을 사용하십시오.

cmd /v /c "(for /l %a in () do @for /f "tokens=*" %b in ('ping -w 1000 -n 1 xxx.xxx.xxx.xxx ^| findstr "Reply Request Unknown Destination"') do @echo !DATE! !TIME! %b & timeout 3000 >NUL) > pingtestresults.txt"

NB :

  1. 당신은 대체 할 수 xxx.xxx.xxx.xxx와 함께google.com
  2. 편집하는 간격 변경 300060하거나 (1 분) 10 (10 초)
  3. 당신이 (또는 .cmd를 .bat 인) 배치 파일에서이 명령을 둘 필요가 있다면, 당신이 바꿀 수 있도록 %함께%%

1

Windows 솔루션의 경우 wtee.exe 를 설치 하려는 경우 다음과 같이 작동합니다 ( pingloop.bat ).

@echo off
SETLOCAL

set pingTarget=yahoo.com
set fileName=pinglog.txt
set waitSeconds=420

echo. | wtee -a %fileName%
echo ====================================================== | wtee -a %fileName%
echo Starting Ping Loop; Logging to %fileName% | wtee -a %fileName%

:timestamp
set day=%date:~7,2%
set month=%date:~4,2%
set year=%date:~10,4%

set timestamp=%year%-%month%-%day%_%time%
echo. | wtee -a %fileName%
echo ------------------------------------------------------ | wtee -a %fileName%
echo Ping Timestamp: %timestamp% | wtee -a %fileName%

:ping
ping %pingTarget% -n 1 | wtee -a %fileName%

:wait
ping 127.0.0.1 -n %waitSeconds% > nul

goto timestamp

ENDLOCAL

건배!


0

나는 그것이 Windows 질문 (그리고 오래된 질문)이라는 것을 알고 있지만 Linux 및 OSX와 유사 할 수 있습니다. 이것은 랩톱에서 네트워크 트래픽을 유지하는 간단한 명령을 찾고있을 때 가장 먼저 나온 것입니다. 비슷한 것을 찾는 사람에게 유용 할 수 있습니다.

bash 스크립트에서 :

WAITSECONDS=30 #or whatever your needs are
IPTOPING=8.8.8.8 #or whatever your needs are
ping -i ${WAITSECONDS} ${IPTOPING} > logfile

30 초마다 Google ding ping ping Google DNS 한 줄 :

ping -i 30 8.8.8.8 > logfile

OSX 및 Linux에서 작동하지만 표준이되어야합니다. 어떤 시스템을 사용하고 있는지 모릅니다.


1
cygwin .. cygwin에서 가능합니다 창에서 bash를 사용할 수 있습니다
barlop

0

타임 아웃 스위치는 찾고있는 '대기'스위치와 다릅니다. Windows ping 명령이있는 시간 초과 스위치는 단순히 NEXT 응답을 보내기 전에 대기하는 시간이 아니라 응답을 받기 전에 대기 할 시간을 명령 창에 알려줍니다.


1
슈퍼 유저에 오신 것을 환영합니다! 이것은 실제로 주석이며 원래 질문에 대한 답변이 아닙니다 . 작성자의 의견을 비판하거나 설명을 요청하려면 게시물 아래에 댓글을 남겨주세요. 언제든지 자신의 게시물 에 댓글 수 있으며 평판 이 충분 하면 게시물댓글 수 있습니다 . 댓글을 작성하려면 50 개의 평판이 필요한 이유를
DavidPostill

0

문제는 명확하지 않습니다. 분명히 파일에 추가되는 배치 파일에서 연속 루프에서는 사용되지 않습니다. 특히이 배치 파일이 반복되는 외부 이벤트에 의해 시작될 때 ... 디스크 공간을 채우지 않으려는 경우 또는 수많은 명령 프롬프트를 시작하고 시스템을 중지하려는 경우 ...

내 가정은 테스트를위한 시간이 있고 배치가 끝나야한다는 것입니다. 또한 오늘날 대부분의 MS Windows에는 Powershell이 ​​장착되어 있으며이 경우 유용 할 수 있습니다. 다음은 두 줄짜리입니다.

powershell "get-date | out-file <log filename>"
powershell "test-connection <IP> -delay <interval> -count <how many pings> | out-file -append <log filename>"

배치 파일에 넣거나 powershell 스크립트로 실행할 수 있습니다.이 경우 'powershell'과 큰 따옴표를 제거하십시오.

여전히 Windows의 bash가 가장 좋은 옵션 인 것 같습니다 ...


0

위의 Spark에 의한 답변을 확장하면서 그의 한 줄 코드를 배치 파일에 약간 수정하여 넣었습니다.

cmd /v /c "(for /l %%a in () do @for /f "tokens=*" %%b in ('ping -w 1000 -n 1 %1 ^| 
findstr "Reply Request Unknown Destination"') do @echo !DATE! !TIME! %%b & timeout %2 
>NUL) > pingtestresults.txt"

PingD.bat로 저장 다음을 사용하여 PingD를 실행하십시오. [컴퓨터 이름 / IP] [ping 사이의 지연 (초)]

예를 들어 PingD MyDC01 10 은 10 초마다 핑을 MyDC01에 보냅니다.


0

Windows의 명령 창에 붙여 넣으려면 ...

((ping의 / l % a의 경우) @for / f의 "tokens = *"% b의 ( 'ping -w 1000 -n 1 8.8.8.8 ^ | findstr "알 수없는 응답 회신 요청"') do @echo % b & timeout 3> NUL)

핑은 3 초마다 ... 중지 할 때까지

로그 파일에 쓸 필요가 없기 때문에 (바로 로그 파일이 필요한 이유는 무엇이든) 바로 다음 창에 원하는 결과를 "즉시"제공합니다.

어떤 이유로 든 다음을 수행하여 로그 파일로 파이프 아웃 할 수도 있습니다. (/ l % a in () @for / f "tokens = *"% b in ( 'ping -w 1000 -n 1 8.8. 8.8 ^ | findstr "응답 요청을 알 수없는 대상" ') @echo % b & timeout 3> NUL)> file.txt

또한이 경우 3 초와 같이 'timeout'후 값을 변경하여 시간 초과를 조정할 수 있습니다 ...

그리고 배치 파일로 저장할 필요가 없습니다 ... 저장된 클라우드 위치 또는 사용하려는 명령 폴더 등에 저장된이 텍스트에서이 텍스트 문자열을 복사하여 붙여 넣기 만하면됩니다.


이 질문에 대한 몇 가지 답변이 이미 있습니다. 귀하의 답변이 더 나은 / 다른 방법을 설명하십시오.
Máté Juhász

-1

Windows 기반 시스템에서는 다음 명령을 사용하여 특정 간격 후에 서버를 ping 할 수 있습니다

핑 xxx.xxx.xxx.xxx -w xxxx -n xx >> c : \ logfile.txt

여기서 -w는 밀리 초 단위의 간격을 지정하므로 3 초 지연 동안 1000 ~ 1 초 => 3000 -n ping이 xxx.xxx.xxx.xxx에 서버에 쿼리를 보내는 횟수를 지정합니다.


15
-w는 응답을 기다리는 시간이 아니라 ping을 기다리는 시간을 지정합니다.
Devil 's Advocate

-1

이것은 지정된 간격 (이 예제에서는 10 초)으로 특정 IP를 핑하는 데 사용하는 windows 명령입니다.

ping -t <ip.address> -w 10000

-t는 핑을 계속 말한다.

-w는 다음 핑 전에이 대기 시간을 말합니다. 1 분 대기 예는 다음과 같습니다.

ping -t <ip.address> -w 60000

즐기세요, 행운을 빕니다!


질문은 정보를 파일에 쓰는 방법을 물었습니다. 이를 달성하기 위해 답을 편집 할 수 있습니까?
Ben N

16
Windows에서는 핑 간격이-w 아니라 핑 "손실"을 고려하기 전에 대기 할 최대 시간을 지정합니다 .
wersimmon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.