1

リモート コンピューターから netstat 情報を取得しようとしています。現在、私の方法は次のとおりです。

1) コマンド netstat -a > C:\file.out を使用して C# で RemoteProcess を実行します 2) リモート C$ 共有をローカルにマップし
ます 3) マウントからファイルを読み取ります

一度に多くのシステムでこれを実行しようとしていますが、この方法ではパフォーマンスが低下しています。WMI にクエリを実行する方がよいと考えていますが、msdn のクラス定義から netstat 情報を取得する方法が見つかりません。誰にもアイデアはありますか?ティア!

4

2 に答える 2

2

私は同じ問題を抱えていましたが、次のコマンド ラインでリモート WMI プロセスを作成して解決しました。

string commandLine = "cmd.exe /C netstat.exe -ano > \"{0}\"";

私は基本的に、(WMI を使用して) 使用している OS のフレーバーを特定し、残りのコマンド ラインを または のいずれかでフォーマットしましC:\users\public\output.txtC:\Documents and Settings\All Users\output.txt。次に、結果を読み込んでソース ファイルを削除するだけです。

于 2012-01-23T22:24:31.597 に答える
1

WMI を使用する代わりに、SNMPを検討しましたか? 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

このリンクは、SNMP の操作に関する詳細情報を提供します。

于 2011-09-06T22:09:40.363 に答える