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) など。TCP 接続状態、ローカル アドレス、ローカル ポート、リモートへのアクセスを提供する SNMP OID: .1.3.6.1.2.1.6.13 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnTable) があります。アドレス、リモート ポート。しかし、PID はありません。

要約すると。もう一度質問します。これらのテーブルを一緒に「マップ」する方法はありますか? 他の OID を使用して SNMP で直接、または 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 はサポートしていないtcpListenerTabletcpConnectionTable,、RFC4022 が 2005 年のものであるにも関わらず.tcpConnTableこれらの両方の要求に対して を返します.要求したものとは異なる OID であるため、それを処理するように設定する必要があります.

また、返されるデータは 100% 信頼できるものではありません。このリクエストを使用して、アプリケーションがソケットでリッスンを開始した時刻を確認していましたが、数分間正確に通知されませんでした。

于 2013-06-21T02:59:44.677 に答える