Io-Redirection
在 ping 上禁止“名稱或服務未知”
我有幾個以數字命名的 Raspberry Pi(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,所以我看不到它仍然如何提供輸出。
或者,如果你有更好/更快/更容易/更漂亮的方式來做這個檢查,我很想听聽。
正如評論中簡要指出的那樣,
ping
正在向 stderr 顯示您沒有重定向的消息。這樣做:... ping -c1 pi$i.local > /dev/null 2>&1 ...