
数字(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
...