我试图弄明白,b / c有时ping会起作用,但那是b / c它只是reg。 ICMP但是当真正的交通试图通过隧道它不会工作b / c有2-3个隧道。我想做IF $隧道> 1 AND $ tunnels == 0执行以下重启IPSec。
不那么容易
#!/bin/bash
echo begin ping
ping -c 3 -w 3 -t 2 192.168.1.4 &> /dev/null ;
service ipsec status | awk 'NR==3' | cut -d" " -f1 $tunnels
if
[ $? == 0 ]
then
echo "Connection is up" >> /root/restart_ipsec.log
else
echo "Connection is down" >> /root/restart_ipsec.log
date >> /root/restart_ipsec.log;
/sbin/service crond stop >> /root/restart_ipsec.log;
/sbin/service ipsec stop >> /root/restart_ipsec.log;
sleep 120;
/sbin/service ipsec start >> /root/restart_ipsec.log;
/sbin/service crond start >> /root/restart_ipsec.log;
fi
我试过这个,但不管怎么样,它一直使用第一个。即使我说隧道的数量大于1或0,它仍然使用该语句。什么给了!?
tunnels=$(service ipsec status | awk 'NR==3' | cut -d" " -f1 | sed -e 's/^[ ]*//')
a=0
if
(( $tunnels > $a));
then
echo "To many tunnels =" $tunnels >> /root/restart_ipsec2.log;
echo $a;
elif
[ $tunnels == 0 ]
then
echo "To many tunnelss =" $tunnels >> /root/restart_ipsec2.log
elif
echo "luis3";
[ $? == 0 ]
then
echo "Connection is up" >> /root/restart_ipsec2.log
else
echo "Connection is down" >> /root/restart_ipsec2.log
fi
答案 0 :(得分:1)
尝试[ $? -eq 0 ]
,因为这是一个数字比较。
此外,这一行:
service ipsec status | awk 'NR==3' | cut -d" " -f1 $tunnels
没有多大意义。如果您想要打印第一个字段,请执行以下操作:
service ipsec status | awk 'NR==3{print $1}'
我不知道的是使用$tunnels
就行了。