0

理解しようとしているのですが、b/c ping が機能することもありますが、それは b/c の単なる reg です。ICMP ですが、実際のトラフィックがトンネルを通過しようとすると、2 ~ 3 個のトンネルが存在するために機能しません。IF $tunnels > 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
4

1 に答える 1

1

[ $? -eq 0 ]数値比較なので試してみてください。

また、この行:

service ipsec status | awk 'NR==3' | cut -d" " -f1 $tunnels

あまり意味がありません。最初のフィールドを印刷したい場合は、次のようにします。

service ipsec status | awk 'NR==3{print $1}'

私が知らないのは、$tunnelsあなたが持っている行での使用です。

于 2013-07-29T14:56:08.450 に答える