0

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

谢谢。

4

2 回答 2

4

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

如果您有一个网络主机(例如您的路由器)响应 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(不要忘记附加 a&以使其在后台运行),这将在启动时以 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 资源工具包工具包的一部分安装的命令(可从 Microsoft 网站免费下载

于 2013-11-16T13:54:49.967 回答
0

如果它是 APC 并且具有数据端口,则可以使用 PowerChute。它是一个基于 java 的 GUI(如果这是您的服务器,这可能是一个问题),它完全按照您的要求执行。

于 2012-11-28T09:40:14.457 回答