我想执行一个简单的检查从一个整数值输出。 在Linux中,这个工作非常好,但是FreeBSD的ping输出一个带有百分号后缀的float值。
LOSS=`/sbin/ping -c 10 -W 1000 -n $IP | grep loss | awk '{print $7}'` if [ ${LOSS} > ${LIMIT} ]; then # Do something here fi
但是由于$ {LOSS}的值是一个string,在BSD下比较失败。
请帮助?
你可以改变awk分割空间和点,以拉出损失数字的整数部分。
ping -c 10 1.2.3.4 | grep loss | awk '{FS = " |[\.]"} {print $7}'
您需要查看BSD的ping命令。 man ping我假设你想要以下:
#!/bin/sh count1=0 count2=0 Ping=$(ping -s 64 10.10.24.6 -c 10 | grep packet | awk '{print $(NF-2)}') # BSD #Ping=$(ping -s 64 10.10.24.6 -c 10 | grep packet | awk '{print $(NF-4)}') # Linux if [ "$Ping" == "0%" ]; then count1=$((count1 + 1)) echo IP_addr" "UP" " else count2=$((count2 + 1)) echo IP_addr" "DOWN" " fi echo $count1 IP addresses UP and $count2 IP addresses DOW
如果你没有得到所需的结果,找出你需要在ping命令中修改的参数。
希望能帮助到你!