태그 보관물: batch-file

batch-file

X 분마다 핑을 수행하고 응답 시간을 확인하려면 어떻게해야합니까? 네트워크에 문제가 없다”고 말할 때 다시 확인하고

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

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

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

@ECHO OFF

:LOOPSTART

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

GOTO LOOPSTART



답변

나에게는 잘 보이지만 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)하며, 즉시 응답하므로이를 사용 하여 실행 지연 을 모방 할 수 있습니다 .


답변

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

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 인) 배치 파일에서이 명령을 둘 필요가 있다면, 당신이 바꿀 수 있도록 %함께%%

답변

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

건배!


답변

나는 그것이 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에서 작동하지만 표준이되어야합니다. 어떤 시스템을 사용하고 있는지 모릅니다.


답변

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


답변

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

내 가정은 테스트를위한 시간이 있고 배치가 끝나야한다는 것입니다. 또한 오늘날 대부분의 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가 가장 좋은 옵션 인 것 같습니다 …


답변

위의 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에 보냅니다.