ping 腳本 - 主機關閉與主機不在網路上

ping 腳本 - 主機關閉與主機不在網路上

我有以下腳本,我試圖區分已關閉的伺服器和不再位於網路上的伺服器。如果我在剛關閉的伺服器上的命令列上使用 ping 命令並回顯 $?正如預期的那樣,我得到了 1。如果我在不再位於網路上的伺服器上的命令列上使用 ping 命令並回顯$?我會按預期得到 2。我似乎無法在我的腳本中捕捉這種行為。在下面的腳本中,不再位於網路上的伺服器根本不會出現在badhosts輸出檔中。我在 ping 線路上使用 dev null,因為我不想在輸出中取得主機未知線路,這會扭曲結果。

#!/bin/ksh
# Take a list of hostnames and ping them; write any failures
#set -x

for x in `cat hosts`
do
ping -q -c 1 $x > /dev/null 2> /dev/null

if [ "$?" -eq 1 ];then
        echo $x is on network but down >> badhosts
elif [ "$?" -eq 2 ];then
        echo $x is not on the network >> badhosts
  fi
done

答案1

我按如下方式修改了我的腳本並且這有效。

#!/bin/ksh
# Take a list of hostnames and ping them; write any failures
set -x

for x in `cat hosts`
do
ping -c 1 $x > /dev/null 2> /dev/null
pingerr=$?

if [ $pingerr -eq 1 ]; then
        echo $x is on network but down >> badhosts
fi

if [ $pingerr -eq 2 ]; then
        echo $x is not on the network >> badhosts
fi
done

相關內容