检测到PC正在UPS电源上运行并关闭计算机

时间:2012-11-28 09:08:04

标签: bash hardware

我正在下载大量数据,晚上和我的电脑通过UPS运行。有什么方法可以检测到电源故障并命令我的电脑自动关闭吗?因为我晚上工作,没有人关掉电脑,如果有人能提供帮助,那将会非常有帮助。有可能吗?

感谢。

2 个答案:

答案 0 :(得分:3)

重要提示:以下提供的脚本会导致系统在网络中断时关闭,因此使用它们需要您自担风险!

如果你有一个网络主机(例如你的路由器)响应ICMP回应请求而不是由UPS供电(或者至少网络设备不是由UPS),将每隔几秒ping一次主机,如果它关闭,则关闭PC:

#!/bin/bash
while :
do
  ping -c 1 -w 5 192.168.0.1 &> /dev/null
  if [  $? -gt 0  ]; then
    shutdown -hP now
    break
  fi
  sleep 10s
done

您必须将192.168.0.1更改为您要ping的网络主机的IP地址。

您还必须使用chmod +x <script_name>使脚本可执行,并在/etc/rc.local中对其进行调用(不要忘记添加&以使其在后台运行)这将在启动时以root身份运行脚本。

为了完整起见,如果PC运行的是Windows XP,可以使用以下批处理文件:

:loop
ping -n 1 -w 5000 192.168.0.1
if not %ERRORLEVEL% == 0 (
    shutdown -s
    goto end
)
sleep 10
goto loop
:end

请注意,Windows批处理文件需要sleep命令,该命令可以作为Windows Server 2003 Resource Kit工具包(available as a free download from Microsoft's site)的一部分安装

答案 1 :(得分:0)

如果它是APC且它有数据端口,您可以使用PowerChute。这是一个基于java的GUI(如果这是你的服务器可能会出现问题),它完全符合你的要求。