如何使用 ssh 检查我的 Windows 10 电脑是否已准备好进行远程连接?

如何使用 ssh 检查我的 Windows 10 电脑是否已准备好进行远程连接?

我使用远程桌面服务唤醒 Windows 10 PC 并wakeonlan连接。但是,如果我在唤醒 PC 后过早尝试连接,连接就会失败,我必须重试。

在尝试启动客户端之前,有没有办法检查 PC 是否已准备好连接?

我目前的进展

if ssh -o ConnectTimeout=10 [email protected] 'tasklist | findstr "Process Name"'; then Do this
else
    echo Not Ready
fi

答案1

假设 Windows 10 PC 响应 ping,您可以编写一个 bash 脚本来检查并等待 ping 成功。例如:

#!/bin/bash #force interpreter to use bash
wakeonlan <ip> #whatever you use to wake it up

sleep 20 #20 second delay

ping <ip address>
if [ $? == 0 ] #if the ping responded and didn't time out
then
    <send command>
else
    <ping wasnt successfully returned here, so do something else>
fi

您可能希望将其调整为 While 类型的循环,等待 Windows 10 PC 响应,并可能为 ping 命令添加超时。虽然这是一个应该可以工作的基本框架,假设 Windows PC 一开始就响应 ping

编辑:

为了回应 OP 的更新,如果 Windows PC 在连接到网络后需要时间进行初始化,则 ping 将不起作用。相反,您可以循环尝试通过 SSH 进行连接(据我所知,这是继续进行所需的),然后一旦成功,就开始下一个命令。SSH 的退出代码也可能对此有所帮助。

相关内容