![IP를 ping하고 500ms를 초과하여 경과된 오류 날짜/시간을 표시하고 실패한 경로를 추적하는 로그를 생성하는 스크립트 [닫기]](https://linux55.com/image/65835/IP%EB%A5%BC%20ping%ED%95%98%EA%B3%A0%20500ms%EB%A5%BC%20%EC%B4%88%EA%B3%BC%ED%95%98%EC%97%AC%20%EA%B2%BD%EA%B3%BC%EB%90%9C%20%EC%98%A4%EB%A5%98%20%EB%82%A0%EC%A7%9C%2F%EC%8B%9C%EA%B0%84%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EA%B3%A0%20%EC%8B%A4%ED%8C%A8%ED%95%9C%20%EA%B2%BD%EB%A1%9C%EB%A5%BC%20%EC%B6%94%EC%A0%81%ED%95%98%EB%8A%94%20%EB%A1%9C%EA%B7%B8%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
핑 통계를 보여주는 로그를 생성하기 위해 지속적으로 실행되는 스크립트를 만들려고 합니다. 핑 실패, 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
올바른 반환 코드를 제공하세요.