[英]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.