在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并将其替换为仅检查网络设备状态的命令。如果连接是“up”,是否有可能从中推断出来?
我还希望将该解决方案实现为一种不断检查连接的服务,而不是定期使用cronjob进行检查。
如果有人能把我推向正确的方向,我真的很感激。
谢谢
答案 0 :(得分:1)
快速而肮脏的是nm-tool
。 dbus-send
可以更精确一些,但需要了解D-Bus如何与NetworkManager配合使用。如果你想要持久的东西,你需要学习如何与D-Bus交互,但这可能需要使用一些较低级别的东西,比如Python。
答案 1 :(得分:1)
您的ISDN是由内部适配器还是通过以太网连接提供的?如果您有外部“调制解调器”,则需要使用SNMP或其专有设施进行查询。
顺便说一下,你可以通过这种方式进行测试:
if /sbin/ping -c 1 google.com > /dev/null 2>&1
then
...
此外,单个ping是非常少量的字节。如果你每分钟只做几次,你可能永远都不会注意到它。