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