我正在尝试从远程计算机获取netstat信息。现在,我的方法是:
1)使用命令netstat -a>在C#中执行RemoteProcess。 C:\ file.out
2)我将远程C $共享映射到我的本地
3)我从mount
我希望同时在许多系统上执行此操作,并且使用此方法的性能很差。我想更好的方法是查询WMI,但我找不到如何从msdn上的类定义中提取netstat信息。有人有主意吗? TIA!
答案 0 :(得分:1)
我遇到了同样的问题,并通过使用以下命令行创建远程WMI进程来解决它:
string commandLine = "cmd.exe /C netstat.exe -ano > \"{0}\"";
我基本上只是确定了我正在使用哪种OS(使用WMI),并使用C:\users\public\output.txt
或C:\Documents and Settings\All Users\output.txt
格式化命令行的其余部分。然后我只是读取结果并删除源文件。
答案 1 :(得分:0)
您是否考虑过SNMP而不是使用WMI?在我看来,SNMP似乎是最合乎逻辑的协议。
虽然我的SNMP经验仅限于监控交换机和UDP,但我会尝试给你一些指示,说明从哪里开始。
首先,这需要SNMP服务在受监控的计算机上运行,并且可能需要调查哪些MIB要使用。我无法确切地告诉你在哪里看,但我找到了一个已经完成的项目(尽管不是.NET,它应该对参考有用)
通过一些调查,这个脚本应该提供足够的信息来试一试。
我在他的脚本中注意到以下OID
对于TCP(包含完整的树以给它一些上下文):
1.3.6.1.2.1.6.13.1.1 - tcpConnState
1.3.6.1.2.1.6.13.1 - tcpConnEntry
1.3.6.1.2.1.6.13 - tcpConnTable
1.3.6.1.2.1.6 - tcp
1.3.6.1.2.1 - SNMP MIB-2
1.3.6.1.2 - IETF Management
1.3.6.1 - OID assignments from 1.3.6.1 - Internet
1.3.6 - US Department of Defense
1.3 - ISO Identified Organization
1 - ISO assigned OIDs
对于UDP:
1.3.6.1.2.1.7.5.1.1 - udpLocalAddress
1.3.6.1.2.1.7.5.1 - udpEntry
1.3.6.1.2.1.7.5 - udpTable
1.3.6.1.2.1.7 - udp
1.3.6.1.2.1 - SNMP MIB-2
1.3.6.1.2 - IETF Management
1.3.6.1 - OID assignments from 1.3.6.1 - Internet
1.3.6 - US Department of Defense
1.3 - ISO Identified Organization
1 - ISO assigned OIDs
Top of OID tree
This link提供了有关使用SNMP
的更多信息