3

我正在尝试使用 SNMP 将主机上的传出端口与在负责该通信的计算机上运行的应用程序进行映射。

运行“netstat -ano”时,我可以访问协议、本地地址(带端口)、外部地址(带端口)、状态和 PID。但我想完全做到这一点,而不必从 Java 执行“cmd”。

通过使用 SNMP OID:.1.3.6.1.2.1.25.4 (.iso.org.dod.internet.mgmt.mib-2.host.hrSWRun) 我可以访问 PID(例如 1704)、名称(例如 cmd。 exe)、路径(例如 C:\Windows\system32)等。有一个 SNMP OID:.1.3.6.1.2.1.6.13 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnTable) 可以让您访问 TCP 连接状态、本地地址、本地端口、远程地址,远程端口。但是没有PID。

所以总结一下。我的问题又来了:有没有办法将这些表“映射”在一起?直接在 SNMP 中与其他 OID 或与 WMI/WMIC 结合使用?

更新:我想要的是访问 TcpConnectionEntry (tcpConnectionTable) 中的 tcpConnectionProcess。这来自 RFC 4022。tcpConnectionProcess 具有 OID:.1.3.6.1.2.1.6.19.1.8 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionProcess)

奇怪的是我从 OID 获取值:.1.3.6.1.2.1.6.19.1.7 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionState)

这里的主要问题是,在 Windows 中,这个表是空的。可能我缺乏关于在 Windows 上安装的知识,但任何帮助都会有很大帮助。

4

1 回答 1

0

3 年后仍然如此:MS 不支持tcpListenerTable或者tcpConnectionTable,尽管 RFC4022 是从 2005 年开始的。它tcpConnTable为这两个请求返回 ,并且您需要设置来处理它,因为它与您请求的 OID 不同。

并且返回的数据不是 100% 可靠的。我正在使用这个请求来找出应用程序何时开始侦听套接字,但它并没有准确地告诉我几分钟。

于 2013-06-21T02:59:44.677 回答