2010-05-02 3 views
3

J'essaie d'utiliser SNMP pour mapper les ports sortants sur mon ordinateur hôte avec l'application s'exécutant sur l'ordinateur responsable de cette communication.Mappage de processus à port avec SNMP et/ou wmi/wmic en Java

Lors de l'exécution de "netstat -ano", j'obtiens accès au protocole, à l'adresse locale (avec le port), à l'adresse étrangère (avec le port), à l'état et au PID. Mais je veux le faire entièrement sans avoir à exécuter "cmd" depuis Java. En utilisant SNMP OID: .1.3.6.1.2.1.25.4 (.iso.org.dod.internet.mgmt.mib-2.host.hrSWRun) J'ai accès au PID (par exemple 1704), Nom (ex: cmd.exe), Path (entre autres C: \ Windows \ system32). Il existe un OID SNMP: .1.3.6.1.2.1.6.13 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnTable) qui vous donne accès à l'état de la connexion TCP, à l'adresse locale, au port local , adresse distante, port distant. Mais pas de PID.

Donc, pour résumer. Ma question encore une fois: Y a-t-il un moyen de «cartographier» ces tables ensemble? Soit directement dans SNMP avec d'autres OID ou en conjonction avec WMI/WMIC? MISE À JOUR: Ce que je veux, c'est l'accès à tcpConnectionProcess dans TcpConnectionEntry (tcpConnectionTable). Ceci est de la RFC 4022. tcpConnectionProcess a OID: .1.3.6.1.2.1.6.19.1.8 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionProcess)

Le chose étrange est que je reçois des valeurs de OID: .1.3.6.1.2.1.6.19.1.7 (.iso.org.dod.internet.mgmt.mib-2.tcp.tcpConnectionTable.tcpConnectionEntry.tcpConnectionState)

La principale problème ici est que dans Windows, cette table est vide. Probablement mon manque de connaissances en ce qui concerne l'installation sur Windows, mais toute aide serait d'une grande aide.

Répondre

0

Il est encore vrai 3 ans plus tard: MS ne supporte pas tcpListenerTable ou tcpConnectionTable, en dépit RFC4022 étant de 2005. Il retourne le tcpConnTable pour ces deux demandes, et vous devez être mis en place pour gérer cela, comme il est un OID différent de celui que vous avez demandé.

Et les données retournées ne sont pas fiables à 100%. J'utilisais cette requête pour savoir quand une application commençait à écouter sur le socket, et cela ne m'a pas été précis pendant plusieurs minutes.

Questions connexes