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

相关内容