0

在 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 定期检查。

如果有人能把我推向正确的方向,我将不胜感激。

谢谢

4

2 回答 2

1

为了快速和肮脏,有nm-tool. dbus-send可以更精确一点,但需要了解 D-Bus 如何与 NetworkManager 一起工作。如果你想要一些持久的东西,那么你需要学习如何与 D-Bus 交互,但这可能需要使用一些较低级别的东西,比如 Python。

于 2010-06-05T01:50:42.103 回答
1

您的 ISDN 是由内部适配器还是通过以太网连接提供的?如果您有外部“调制解调器”,则需要使用 SNMP 或其专有工具进行查询。

顺便说一句,您可以通过这种方式进行测试:

if /sbin/ping -c 1 google.com > /dev/null 2>&1
then
    ...

此外,单个 ping 是非常少的字节数。如果你每分钟只做几次,你可能永远不会注意到它。

于 2010-06-05T02:11:50.523 回答