Java e SNMP

Ola!
Estou querendo obter informações de uma MIB que está em um determinado equipamento na rede.
Com pearl eu obtenho da seguinte forma:

@main::DEBUG=qw();
require 5.005;
use strict;
use FindBin;
use Getopt::Long;
use MRTG_lib “2.090017”;
use SNMP_Session “0.86”;
use BER “0.86”;
use SNMP_util “0.86”;
use locales_mrtg “0.07”;
BEGIN {
print ‘2606.4.1.1.0:’,snmpget(‘Endereco’,‘MIB’),"\n";
print ‘2606.4.1.3.0:’,snmpget(‘public@10.144.4.46’,‘1.3.6.1.4.1.2606.4.1.3.0’),"\n";
}soh isso e ele me retorna os valores de cada mib
Em java alguem conhece alguma api que possa fazer isso!
Se não tiver como eu poderia está fazendo isso?
Obrigado ai galera espero q tenha sido claro na especificação do problema!
[i]

comecando com uma simples pesquisa no google …

http://www.google.com/search?hs=6iu&hl=en&lr=&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&q=java+snmp&btnG=Search

A seguinte API é muito boa…
http://gicl.cs.drexel.edu/people/sevy/snmp/snmp.html
Um cologa a utilizou para acessar um ‘accesspoint’ e avaliar o desempenho do mesmo.
Falos.

import java.io.IOException;
import java.net.InetAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.tools.console.SnmpRequest;
public class Teste2 extends SnmpRequest {
public Teste2(String[] end) throws InterruptedException {
super(end);
try {
UdpAddress udpAdrres = new UdpAddress();
udpAdrres.setInetAddress(InetAddress.getByName(end[0]));
this.setAddress(udpAdrres);
OID oid = new OID();
oid.setValue(“1.3.6.1.4.1.2606.4.2.4.5.2.1.5.1”);
this.setTrapOID(oid);
this.send();
//Como faço para obter a resposta? alguem sabe??
System.out.println(“teste3>>”+ (String)this.getTrapOID().getValue().toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Mandei ah menssgem, nao deu erro algum sei que dah certo pq se eu mudar o IP da erro!!! Queria que alguem me ajudasse aí… pq se eu postei aqui era pq jah tinha estudado!!

public class ValorMib {

private Snmp snmp;
private String [] valorMIBFinal={""};

public ValorMib() {
	
}
public String[] valorMib(String host, String[] mib,int port) {
	try {
		//cria a variavel address que contem o IP ou nome da maquina
		//utiliza o protocolo UDP e a porta 161
		Address address = GenericAddress.parse("udp:" + host + "/" + port);
		//cria a variavel transport do qual estebelce um canal com o Gerente
		TransportMapping transport = new DefaultUdpTransportMapping();
		snmp = new Snmp(transport);

		transport.listen();
		//cria a variavel target responsavel por receber os paramentros 
		//Community,address, TimeOUt e versao SNMP
		CommunityTarget target = new CommunityTarget();
		target.setCommunity(new OctetString("public"));
		target.setAddress(address);
		target.setRetries(1);
		target.setTimeout(100);
		target.setVersion(SnmpConstants.version1);
		//cria a variavel PDU que vai conter o valor da MIB
		PDU pdu = new PDU();
		//pdu.add(new VariableBinding(new OID(new int[] {1,3,6,1,4,1,2606,4,2,4,5,2,1,5,1})));
					
		for (int i = 0; i < mib.length; i++) {
			if ((mib[i]!=null)&&(mib[i]!="")){
				pdu.add(new VariableBinding(new OID(mib[i])));
			}
		}
		
		pdu.setType(PDU.GET);
		synchronized (snmp) {
			//envia mensagem ao gerente e cria um objeto listener
			snmp.send(pdu, target, null, listener);
			try {
				snmp.wait();
			}
			catch (InterruptedException e) {

				e.printStackTrace();
			}
			
		}
		
	}
	catch (IOException e) {
		e.printStackTrace();
	}
	return valorMIBFinal;
}
/**
 * Objeto Listener responsavel por receber o retorno do agente 
 */
private ResponseListener listener = new ResponseListener() {
	
	/* (non-Javadoc)
	 * @see org.snmp4j.event.ResponseListener#onResponse(org.snmp4j.event.ResponseEvent)
	 * metodo onResponse aguarda resposta do Gerente
	 */
	public void onResponse(ResponseEvent event) {
		((Snmp) event.getSource()).cancel(event.getRequest(), this);
		System.out.println(event.getResponse());
		synchronized (snmp) {
			snmp.notifyAll();
		}

	}
};

}

classe main
public static void main(String[] args) {
String[] t=new String[3];
t[0]= “1.3.6.1.4.1.2606.4.2.3.5.2.1.5.4”;
t[1]= “1.3.6.1.4.1.2606.4.2.3.5.2.1.5.4”;
//t[2]= “1.3.6.1.4.1.2606.4.2.3.5.2.1.5.2”;
ValorMib valorMib = new ValorMib();
t=valorMib.valorMib(“10.144.4.46”, t, 161);
for (int i = 0; i < t.length; i++) {
System.out.println(“teste”+t[i]);

	}
	//valorMib.valorMib("10.144.4.46", new int[]{1,3,6,1,4,1,2606,4,2,3,5,2,1,5,4}, 161);
	
}

}

Muito bom, vlw, tava louco atras disso.

Semestre passado eu tive q desenvolver um gerente SNMP na faculdade, e esse aplicativo me ajudou bastante a entender as coisas.

http://www.snmp4j.org/

Leia as regras do BER e sobre ASN.1