检查机器是否为UP / ALIVE

时间:2010-02-16 10:43:14

标签: c# diagnostics

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

现在,我能想到的是运行PING命令并检查机器是否会回复。有没有优雅的方式?

谢谢!

修改

我担心的一个问题是PING通常会响应ONCE机器启动Windows。有些服务可能尚未启动。见Anders Lindahl回答。

5 个答案:

答案 0 :(得分:7)

考虑到PING基本上是为了完成您正在尝试做的事情而设计的(看看机器是否可用并且正在响应),我认为它已经非常优雅了。为什么复杂化?

答案 1 :(得分:1)

Ping通常足以验证计算机是否已正确重新启动,但如果您依赖计算机上的任何服务启动,则可能需要明确检查。请查看使用WMI查询它:

答案 2 :(得分:1)

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

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

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

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

-sV选项启用版本检测

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

其他选择:

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

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

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

答案 3 :(得分:0)

为什么你认为ping是个坏主意?我不认为你会绕过发送主机的东西,并检查它是否响应,并没有真正比ping更小的程序。通过使用ping,你不必自己实现一些东西。

答案 4 :(得分:0)

我不知道优雅,但依赖于(a)某些机器可以设置为不响应ping作为潜在的DoS攻击和(b)您对机器的访问权限,也许是PowerShell脚本可以使用。可以在Intranet上使用PowerShell来确定计算机是否已打开电源,确定各种计算机服务的状态,访问该计算机上的SQL数据库,启动/关闭应用程序服务等。再次,根据您需要执行的操作,C#可能不适合这项工作。