我可以在 Ubuntu 上检测 Windows XP 计算机是否已打开吗?

我可以在 Ubuntu 上检测 Windows XP 计算机是否已打开吗?

我想测量装有 Windows XP 的笔记本电脑使用电池可以运行多长时间。我还有另一台装有 Xubuntu 的电脑,我可以用它来测量 Windows XP 电脑是否开机。但是我如何连接这两台电脑,如何测量 Xubuntu 是否可以从 Windows XP 电脑读取数据?或者 XP 应该向 Xubuntu 发送一些数据吗?

答案1

我认为最简单的解决方案是使用 ICMP 回显请求 (ping)。为此,您必须设置 XP 框以响应 ICMP 消息,如所述这里

现在,确保 Linux 和 XP 计算机位于同一网络中,并且都具有 IP 地址。您可以在 Linux 上使用以下命令进行检查

ifconfig

在 Windows 上

ipconfig /all

您需要 XP IP 地址来执行以下脚本:

#!/bin/bash
time (
    while [ true ]; do
        ping -c 1 "$1" > /dev/null || break
        sleep 60
    done
)

将此脚本保存在某个文件中,例如,pingtimer.sh使用以下命令使其可执行chmod +x pingtimer.sh

您现在可以开始

./pingtimer.sh <target IP address>

在同一目录中。


让我们分析一下:

  1. time ()测量执行内部命令所()花费的时间。
  2. while [true]; do ...; done无限重复内部命令(...)或直到被中断或打破。
  3. ping -c 1 "$1" > /dev/null向存储在中的 IP 地址发送一个 ping 请求$1,这是第一个程序参数,即目标 IP。由于会ping产生大量输出,我们只需将其丢弃即可/dev/null
  4. ... || break如果操作符之前的命令返回非零值,则将中断“无限”while 循环||。对于 ping,如果至少一个 ICMP 数据包未得到响应,则会发生这种情况。如果发生这种情况(例如由于目标机器关闭),程序将退出,并打印 的输出time
  5. sleep 60将导致进程休眠 60 秒,之后将发送另一个 ICMP Echo 请求。请根据需要调整此值。请注意,如果您开始用 ping 淹没防火墙,某些防火墙将停止响应。

相关内容