IP를 ping하고 500ms를 초과하여 경과된 오류 날짜/시간을 표시하고 실패한 경로를 추적하는 로그를 생성하는 스크립트 [닫기]

IP를 ping하고 500ms를 초과하여 경과된 오류 날짜/시간을 표시하고 실패한 경로를 추적하는 로그를 생성하는 스크립트 [닫기]

핑 통계를 보여주는 로그를 생성하기 위해 지속적으로 실행되는 스크립트를 만들려고 합니다. 핑 실패, 500밀리초 이상의 시간 및 시간 초과에 대한 추적 경로를 로그에 포함하고 싶습니다. 이것은 내 스크립트입니다.

#!/bin/bash
ip=www.google.com
while [ 1 ]; do
ping -c 1 $ip 1> /dev/null
result=$?
if [ $result == "1" ]; then
echo FAIL on `date` >> ~/ping.log
echo FAIL on `date`.  Doing tracert!
traceroute $ip >> ~/ping.log
fi
if [ $result == "0" ]; then
echo SUCCEED on `date` >> ~/ping.log
echo SUCCEED on `date`
fi
sleep .4
done

이 스크립트를 다른 웹사이트에서 복사했습니다.

답변1

한 번 살펴보고 싶을 수도 있습니다평평한옵션 -t:

-tn

초기 대상 제한 시간(밀리초)(기본값 500) 기본 모드에서는 fping이 첫 번째 요청에 대한 응답을 기다리는 시간입니다. 연속 시간 초과에 백오프 요소를 곱합니다.

다음을 사용하여 fping출력을 구문 분석하지 않고 종료 상태를 확인할 수 있습니다 .

IP=121.78.67.31; fping -c1 -t200 $IP || traceroute $IP

답변2

철사

ping -c 1 $ip 1> /dev/null

결과는 삭제되므로 핑이 500밀리초 이상 소요되었는지 알 수 없습니다.

사용

ping -c 1 $ip 1> /tmp/ping.txt

핑 응답을 유지한 다음

Ping이 성공한 부분에서

awk -F/ 'NF>5 { if ( $5 > 500 ) exit 1 ; else exit 0 }'  /tmp/ping.txt

평균 핑이 500ms를 초과하면 500ms 미만에서는 0을 제공하고 평균 핑이 500ms를 초과하면 1을 제공합니다.


핑 결과는 다음과 같습니다

PING 172.18.15.22 (172.18.15.22) 56(84) bytes of data.
64 bytes from 172.18.15.22: icmp_seq=1 ttl=64 time=0.237 ms

--- 172.18.15.22 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.237/0.237/0.237/0.000 ms

알겠습니다

  • -F//를 구분 기호로 사용
  • NF>5최소한 /가 있는 행을 선택하십시오.
  • if ( $5 > 500 )테스트 평균
  • exit 1 / exit 0올바른 반환 코드를 제공하세요.

관련 정보