Answers:
如果您使用的是XP / 2003 +(包括Vista / 2008/7),则可以使用Win32_PingStatus。运行脚本代码的计算机是唯一需要XP / 2003 +的系统,它的工作方式与使用Ping.exe相同,只是不使用ping.exe,因此它应成为安全设置漏洞。不允许执行ping.exe。
strComputer = "192.168.1.1"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PingStatus " & _
"Where Address = '" & strComputer & "'")
For Each objItem in colItems
If objItem.StatusCode = 0 Then
WScript.Echo "Reply received."
End If
Next
有关如何使用Win32_PingStatus的更多信息,请参见脚本专家的文章:
http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx
Ping是ICMP,如果阻止了ICMP,则无法ping通。
如果您接受TCP / UDP连接,您仍然可以测试TCP或UDP端口。
如果要在缺少ping,nc,telnet和其他工具的容器上运行测试,则可以使用以下技巧:
(echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"
这将尝试通过设备的tcp / udp连接(哇,我知道),如果端口打开则回显“ open”,如果端口关闭则回显“ closed”。
在这种情况下,它将挂起一会儿,然后回显“ close”。
在远程计算机上运行SNMP代理,并使用管理器从标准MIB中读取值之一。
如果您没有防火墙和路由器,也就是说,如果您与要检查的主机位于同一网段,则上述大多数解决方案都将为您提供详尽的建议。
连接到哪个端口都没有关系,实际上,如果连接到不太可能运行服务的端口,则可以完成工作而不会被发现。
怎么样?
您可以使用任何喜欢的工具,但我们只能使用telnet ...
% telnet <host> 313373
Trying 10.211.55.3...
telnet: connect to address 10.211.55.3: Connection refused
telnet: Unable to connect to remote host
%
除非主机丢弃数据包,否则这应该立即发生。实际发生的是主机上的TCP / IP堆栈正在向您发送回带有RST位置1的TCP段-即终止SYN数据包。
您收到RST数据包的事实意味着在另一端确实存在一台主机,并且作为奖励-您未检测到这样做(TCP / IP没有上层应用程序可以谈论此连接) 。
但是,我可能会使用scapy之类的东西,而不是telnet,写一些寻找RST标志的东西,然后告诉您。
只是为了完成此操作,如果您尝试的IP上没有主机-它将挂起一会儿,并超时- 如果接收主机的防火墙带有降落过滤器,则将发生相同的情况。
如果涉及防火墙,那么就象其他人所建议的那样,使用诸如之类的工具nmap
。
因为我在seq 1 65535
; 做tcpconnect -v remotehost $ i; 做完了
您可以让计算机每分钟一次将snmp陷阱(数据包)发送到远程监视器,并设置一条规则来监控您每分钟收到的陷阱。
您可以安装简单的Web服务器并使用显示“ ONLINE”的网页。您只需在需要的任何地方都可以连接它当然,您需要一个statin ip或service linke dyndns