在Ubuntu 10.04服务器上,我想使用bash脚本执行以下操作:
创建一个监控ISDN连接的服务,如果停机时间超过60秒,则强制重新连接。我目前的解决方案是这样的:
#!/usr/bin/bash
LOGFILE=/home/msw/router/ping-stats.txt
TIME="`date +%C%y%m%d%H%M`"
/sbin/ping -c 1 google.com > /dev/null 2>&1
if [ "$?" == "0" ]
then
STATUS=1
else
STATUS=0
fi
echo "$TIME $STATUS" >> $LOGFILE由于ISDN连接上的带宽非常宝贵,因此我希望避免ping,而使用一个简单地检查网络设备状态的命令来代替它。有没有可能从这一点推断连接是否处于“正常”状态?
我还希望将解决方案实现为一个服务,它可以持续地检查连接,而不是定期使用cronjob进行检查。
如果有人能把我推向正确的方向,我将不胜感激。
谢谢
发布于 2010-06-05 09:50:42
对于快速和肮脏,有nm-tool。dbus-send可以更精确一点,但需要了解D-Bus如何与NetworkManager一起工作。如果你想持久化一些东西,那么你需要学习如何与D-Bus交互,但这可能需要使用一些低级的东西,比如Python。
发布于 2010-06-05 10:11:51
您的ISDN是由内部适配器提供还是通过以太网连接提供?如果您有外部“调制解调器”,则需要使用SNMP或其专有工具进行查询。
顺便说一句,你可以这样做你的测试:
if /sbin/ping -c 1 google.com > /dev/null 2>&1
then
...而且,单个ping是非常小的字节数。如果你一分钟只做几次,你可能永远不会注意到它。
https://stackoverflow.com/questions/2978790
复制相似问题