我想在断电后立即关闭使用 UPS 的 Linux 服务器。UPS 可以额外运行 30 分钟。我知道有些 UPS 可以自动关闭服务器,但我现在的情况不是这样。
因此,我打算 ping 我的路由器(或网络中的 PC),如果 ping 失败,则意味着断电(也可能是网络问题,但没关系),脚本将运行
"#shutdown now"
我怎样才能做到这一点?
编辑:UPS 正在为两台小型服务器供电,所以我无法在其上使用串行端口(至少不能同时为两台服务器供电)。我们在塞浦路斯的发电厂被爆炸摧毁,因此在我为每台服务器配备 UPS 之前,我需要一个临时解决方案。这就是我问这个问题的原因。
答案1
你使用的是 apc ups 吗?如果是的话,看看 apcupsd,它很棒,可以轻松地完成这个和许多其他类似的事情。
正如 bmdan 所说,您的 ups 无法做到这一点的可能性很小。
答案2
许多 Linux 系统包括看门狗包。此包将通过运行测试来监视某些情况,如果发生故障,则默认重新启动系统。
使用 repair-binary 选项,您可以告诉它运行类似的操作shutdown -h
而不是重新启动。Watchdog 默认包含 ping 测试。
答案3
监控可以做到这一点,并且比 cron 更可取。
尝试如下配置行:
Check host router with address 192.168.1.1
if failed icmp type echo with timeout 120 seconds
then exec "/sbin/shutdown now"
alert root@localhost
确实最好的这里的解决方案是 APCUPSD,您应该获得具有监控功能的东西(USB、串行、以太网)。
答案4
制作一个 bashsscript 并将其添加到 chron:
$1 = "some.host.ip.address";
if ! ping -c 1 -w 5 "$1" &>/dev/null ; then
shutdown -h now
fi
请记住,如果您的路由器而不是服务器出现故障,那么您将会瘫痪……