我试图根据traceroute是否从特定的ip地址获得响应来执行代码。所以:

if traceroute 123.456.78.9
then
   option 1
else
   option 2

我的问题是,不管我是否从IP地址得到响应,选项1总是被执行的。
我已经用“ping”代替traceroute尝试过这个方法,并且它是有效的,但是我没有在最后的代码中使用ping的选项。
更多细节:
在QNX操作系统上运行
成功是由主人的反应构成的,失败是由主人的不反应构成的
成功输出:
traceroute to 123.456.78.9 (123.456.78.9), 1 hops max, 40 byte packets
 1  123.456.78.9 (123.456.78.9)  0.000 ms  1.000 ms  0.000 ms

故障输出:
traceroute to 123.456.78.90 (123.456.78.90), 1 hops max, 40 byte packets
 1  *

最佳答案

问题是traceroute总是回显一个输出,即使没有有效的主机,所以您需要首先检查有效的响应
您必须检查是否收到有效的响应
尝试使用

n=`traceroute 123.456.78.9|grep ms|wc|sed 's/ //g' |cut -d ' ' -f 1`

if [ $n -eq 0 ]
then
    echo 'failed'
else
    echo 'success'
fi

10-01 08:27