pingで「不明な名前またはサービス」を抑制します。

pingで「不明な名前またはサービス」を抑制します。

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

おすすめ記事