숫자(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
...