首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查隧道的脚本- Awk

检查隧道的脚本- Awk
EN

Stack Overflow用户
提问于 2013-07-29 22:54:08
回答 1查看 1.2K关注 0票数 0

我在想,b/c有时ping会起作用,但那只是b/c而已。ICMP,但当真正的流量试图通过隧道时,它不工作,b/c有2-3个隧道。我想做一个IF $tunnels >1和$tunnels == 0来做下面的重启IPSec的操作。

没那么容易

代码语言:javascript
运行
复制
#!/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,它仍然使用该语句。怎么回事!?

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-07-29 22:56:08

尝试使用[ $? -eq 0 ],因为它是一个数字比较。

另外,这一行:

代码语言:javascript
运行
复制
service ipsec status | awk 'NR==3' | cut -d" " -f1 $tunnels

没有多大意义。如果您希望它打印第一个字段,则执行以下操作:

代码语言:javascript
运行
复制
service ipsec status | awk 'NR==3{print $1}'

我不知道的是$tunnels在你的产品线中的用法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17927244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档