ping: 결과만 표시

ping: 결과만 표시

전체 결과 페이지 대신 핑의 밀리초만 표시할 수 있습니까?

내 서버가 온라인인지 확인하고 싶어서 "OK xyz ms" 또는 "FAIL"을 반환하고 싶습니다. 나는 현재 이 일을 하고 있습니다:

#!/bin/sh
ergebnis=$(ping -qc1 google.com) 
ok=$?
avg=$(echo -e "$ergebnis"  | tail -n1 | awk '{print $4}' | cut -f 2 -d "/")

if [ $ok -eq 0 ]
then
        echo "OK $avg ms"
else
        echo "FAIL"
fi

그러나 이것은 꽤 많은 파이프 작업을 사용하고 서버를 모니터링하기 위해 이 명령을 자주 실행하기 때문에 "더 스마트한" 방법이 있는지 궁금합니다. 또한 ping 명령이 실패하면 파이프라인이 제대로 작동하지 않을 수도 있다는 우려도 있습니다.

답변1

다른awk다양성:

ping -qc1 google.com 2>&1 | awk -F'/' 'END{ print (/^rtt/? "OK "$5" ms":"FAIL") }'
  • -F'/'- 슬래시를 /필드 구분 기호로 처리

출력 예:

OK 47.090 ms

답변2

그 자체로는 할 수 있는 일이 많지 않지만 pingAWK에서 모든 처리를 수행하여 파이프, 프로세스 등의 수를 줄일 수 있습니다.

ping -qc1 google.com 2>&1 | awk -F/ '/^rtt/ { printf "OK %.2f ms\n", $5; ok = 1 } END { if (!ok) print "FAIL" }'

답변3

정확한 오류 메시지에 별로 관심이 없다면 어떻습니까?

ping  google.com | grep -Po "time.*"

답변4

네가 원한다면상태(아니다밀리초등) 이제 가셔도 좋습니다 if. 이것은 내 사용 사례에 적합합니다.

if ping -q -c 1 192.168.8.8 2>&1 > /dev/null ; then
    echo "Ok"
else
    echo "Fail"
fi

관련 정보