핑에서 "알 수 없는 이름 또는 서비스"를 억제합니다.

핑에서 "알 수 없는 이름 또는 서비스"를 억제합니다.

숫자(pi0, pi1 등)의 이름을 딴 라즈베리 파이가 여러 개 있습니다. 그들은 고정 IP 주소를 가지고 있지만 잘못된 IP를 얻었더라도 이를 확인하고 온라인 상태인지 확인할 수 있는 간단한 도구가 필요합니다. (과거에는 그 문제로 어려움을 겪었습니다. 최근에는 아무것도 아니지만 어떻게 하면 완벽하게 만들 수 있는지에 관계없이 좋은 아이디어입니다.) 이 도구는 IP를 사용하지 않고 올바른 형식의 MDNS 호스트 이름을 사용합니다. 내가 쓴 스크립트는 다음과 같습니다.

#!/bin/bash

report+="Device Name     Status       Location\n"
report+="-----------     ------       --------\n"

for i in {0..3}
do
    report+="Pi$i             "
    ping -c1 pi$i.local > /dev/null
    if [ $? == 0 ]
    then
        report+="Online       "
        report+=$(ping -c1 pi$i.local | grep -o "\w*192.168.1.\w*" | head -1)
    else
        report+="Unreachable"
    fi
    report+="\n"
done
echo -e "$report"

장치가 온라인일 때 잘 작동하고 반환됨

Device Name     Status       Location
-----------     ------       --------
Pi0             Online       192.168.1.3
Pi1             Online       192.168.1.4
Pi2             Online       192.168.1.5
Pi3             Online       192.168.1.6

그러나 오프라인일 때 출력은 다음과 같습니다.

ping: pi0.local: Name or service not known
ping: pi1.local: Name or service not known
ping: pi2.local: Name or service not known
ping: pi3.local: Name or service not known
Device Name     Status       Location
-----------     ------       --------
Pi0             Unreachable
Pi1             Unreachable
Pi2             Unreachable 
Pi3             Unreachable

ping에서 MDNS 조회 시 "알 수 없는 이름 또는 서비스"를 억제하는 방법이 있습니까? 출력을 /dev/null로 지정했는데 출력이 어떻게 제공되는지 모르겠습니다.

또는 이 확인을 수행하는 더 나은/빠른/쉬운/예쁜 방법이 있다면 이에 대해 듣고 싶습니다.

답변1

짧게댓글에서 지적한, ping메시지가 stderr에 표시되고 있지만 리디렉션되지 않았습니다. 이 방법:

...
ping -c1 pi$i.local > /dev/null 2>&1
...

관련 정보