繁体   English   中英

检查机器是否已启动

[英]Check if machine is UP/ALIVE

我想使用C#检查远程计算机是否已经启动(重新启动/重新映像后)。

现在,我所能想到的就是运行PING命令并检查计算机是否会回复。 有什么优雅的方法吗?

谢谢!

编辑

我关心的问题之一是,一旦计算机启动Windows,PING通常会做出响应。 届时某些服务可能尚未启动。 参见Anders Lindahl的答案。

考虑到PING本质上是设计为完全按照您的意图进行的(查看机器是否可用并作出响应),我想说它已经非常优雅了。 为什么使事情复杂化?

Ping通常足以验证计算机是否已正确重新启动,但是如果您依靠计算机上的任何服务来启动,则可能需要显式检查。 看一下使用WMI进行查询:

通过使用NMAP命令nmap -sS -P0 -sV -O

其中<目标>可以是单个IP​​,主机名或子网

-sS TCP SYN扫描(也称为半开或隐式扫描)

-P0选项允许您关闭ICMP ping。

-sV选项启用版本检测

-O标志尝试识别远程操作系统

其他选择:

-A选项同时启用操作系统指纹识别和版本检测

-v两次使用-v以获得更多详细信息。

nmap -sS -P0 -A -v <目标>

您为什么认为ping是个坏主意? 我认为您不会绕过向主机发送内容并检查它是否响应,并且确实没有比ping来做的任何更小的程序。 通过使用ping,您不必自己实现某些功能。

我不了解优雅,但是取决于(a)可以将某些计算机设置为不响应ping作为潜在的DoS攻击,以及(b)您对计算机具有何种访问权限,也许PowerShell脚本可以采用。 可以在Intranet上使用PowerShell来确定计算机是否已开机,确定各种计算机服务的状态,访问该计算机上的SQL数据库,启动/关闭应用程序服务等。同样,根据您的需要,C#可能不是这项工作的正确工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM