我试图根据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