0

我的电源故障监控方案/Windows 10 计算机自动关机有问题。在我的网络上,我有一个 Linux 机器,它有一个通过 USB 连接的 UPS 单元,并使用软件进行维护,该软件可以在发生电源故障时关闭计算机。在另一台计算机上,也由运行无头 Windows 10 服务器的同一 UPS 单元供电,我设置了一个从任务计划程序运行的简单 bash 脚本 (cygwin)。一旦上述Linux机器停止响应网络上的ping,它应该关闭这台计算机(因为它会在检测到电源故障时关闭)。UPS 单元设置为在电源故障 10 分钟后关闭电源,从而为 Windows 机器提供充足的时间来检测 Linux 机器没有响应并执行关机。下面是监控脚本代码:

#!/bin/bash

upshost="<linux-box-ip>"

echo "UPS Host: $upshost"
while true
do
    date
    ping -c3 $upshost >/dev/null
    if [[ $? -ne 0 ]]
    then
        echo "WARNING: Ping failed, trying again in 30 seconds ..."
        sleep 30
        ping -c3 $upshost >/dev/null
        [[ $? -eq 0 ]] || break
    fi
    echo "Host $upshost responded to ping."
    sleep 30
done
date
echo "ERROR: Host $upshost didn't respond to ping."
echo "System will shutdown in 1 minute."
shutdown -h +1 "System will shutdown in 1 minute."

注意:是我的 Linux 机器的实际 IP 地址,它总是相同的(在路由器设置中保留)。

任务调度程序属性:

Runs from SYSTEM account, whether user is logged on or not, with highest privileges.
Triggers: at system startup
Actions: Start a program
program/script -> c:\cygwin64\bin\bash
arguments -> -l -c "/cygdrive/c/bin/pwrwdog.sh > /cygdrive/c/tmp/pwrwdog.trc"
runs in -> c:\cygwin64\bin
Start if any network connection is available.

我在跟踪和任务调度程序历史记录中看到脚本正确监控来自 Linux 机器的网络响应,当主机停止响应并调用关闭命令时,会中断监控循环。问题是 - 关闭实际上并没有发生:

Host <linux-box-ip> responded to ping.
Sun, Jan  3, 2021  7:23:48 AM
Host <linux-box-ip> responded to ping.
Sun, Jan  3, 2021  7:24:20 AM
WARNING: Ping failed, trying again in 30 seconds ...
Sun, Jan  3, 2021  7:25:16 AM
ERROR: Host <linux-box-ip> didn't respond to ping.
System will shutdown in 1 minute.
System will shutdown in 1 minute.

我想念什么?

4

0 回答 0