当计算机与网络断开连接时触发脚本或操作的最佳方法是什么?

当计算机与网络断开连接时触发脚本或操作的最佳方法是什么?

我正在运行 12.04 LTS。我使用的许多共享资源都远程存储在本地服务器上。当与网络断开连接时(例如网络或路由器故障),我希望动态存档、重命名和取消存档目录备份,以继续使用这些共享资源,直到网络恢复。

当连接状态改变时,是否有一种获取这些数据并触发脚本或其他系统操作的首选方法?

编辑:经过一些额外的研究,我发现有可能udev通过当特定卷连接时触发操作。但这是最好的方法吗?还有 udevinfo 的替代工具吗?它似乎不是软件包的一部分。

答案1

当网络接口打开或关闭时,/etc/network将执行 下的脚本。您可以将脚本放入/etc/networking/if-down.d或 中/etc/networking/if-post-down.d。前者在接口仍然可用的情况下运行,而后者在接口已断开连接的情况下运行;当然,接口可能由于本地网络故障而自动关闭,在这种情况下,您甚至无法从 中使用网络if-down。脚本通过环境变量获取有关网络接口的信息,如 中所述interfaces(5)手册页。确保只对重要的接口丢失做出反应。

如果网络连接由于本地链路之外的某个地方发生故障而断开,或者甚至由于第一个路由器停止正常工作,您的机器都不会收到通知。要检测此类服务丢失,您需要运行某种心跳服务,定期检查远程服务器是否仍然处于活动状态并做出响应。这里没有一刀切的解决方案,因为不同的用例在“网络/服务器速度慢”和“网络/服务器关闭”之间需要不同的阈值。此外,确定服务器是否处于活动状态是特定于应用程序的;它可以是 ping、HTTP 请求或 TCP 连接上的保持活动数据包等。

相关内容