Necesito hacer un agente en SNMP4J, pero la documentación sobre cómo comenzar es bastante pobre. ¿Alguien tiene alguna experiencia con SNMP4J y podría darme una idea sobre cómo comenzar? Gracias.Comenzando con SNMP4J
Respuesta
Puede descargar el código fuente de SNMP4JAgent aquí:
http://www.snmp4j.org/html/download.html
El código fuente incluye un agente de ejemplo - mira en el paquete org.snmp4j.agent.example para todas las clases relacionadas.
http://www.snmp4j.org/agent/doc/org/snmp4j/agent/example/SampleAgent.html
Una forma de empezar sería la creación de un agente utilizando el código de ejemplo y luego modificarlo para adaptarlo a sus necesidades. El JavaDoc que describe cada una de las clases es un poco escueto, pero está completo.
Acerca de cómo ejecutar SampleAgent, publiqué una vez aquí, http://www.lextm.com/2009 /09/trident-sign-how-to-set-up-snmp4j-agent.html –
he creado Snmp Agent usando Snmp4j ... el único problema que tengo es cómo puedo permitir/codificar para ejecutar mi agente para siempre ... –
Aquí es un gran enlace que describe la clase SNMP, que es el núcleo de snmp4j
http://www.snmp4j.org/doc/org/snmp4j/package-summary.html
también echar un vistazo a la SnmpRequest.java para un rápido ejemplo
buena documentación de SNMPv3 la implementación usando bibliotecas SNMP4j es realmente difícil de encontrar. No hay ejemplos de trabajo de agentes SNMPv3 en la documentación oficial. Escribí un agente SNMP básico que se puede conectar usando el protocolo SNMPv3, y realizar operaciones GET y SET en el servidor.
import java.io.IOException;
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.AuthGeneric;
import org.snmp4j.security.AuthSHA;
import org.snmp4j.security.PrivAES128;
import org.snmp4j.security.PrivacyGeneric;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.TransportIpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultTcpTransportMapping;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class SNMPV3Agent {
private Address nmsIP;
private String user;
private String securityName;
private String privacyPassword;
private String authorizationPassword;
private AuthGeneric authProtocol;
private PrivacyGeneric privacyProtocol;
private String protocol;
private long timeOut = 1000L;
private int noOfRetries = 2;
private Snmp snmp;
private UserTarget target;
SNMPV3Agent(String ip, String protocol, int snmpPort, String username,
String securityName, String privacyPassword, String authPassowrd,
AuthGeneric authProtocol, PrivacyGeneric privacyProtocol) {
nmsIP = GenericAddress.parse(protocol + ":" + ip + "/" + snmpPort);
System.out.println("NMS IP set : " + nmsIP.toString());
this.protocol = protocol;
this.user = username;
this.securityName = securityName;
this.privacyPassword = privacyPassword;
this.authorizationPassword = authPassowrd;
this.authProtocol = authProtocol;
this.privacyProtocol = privacyProtocol;
}
public static void main(String[] args) {
SNMPV3Agent agent = new SNMPV3Agent("nms/server-ip", "udp", 162,
"abhinav", "abhinav", "myprivpass", "myauthpass",
new AuthSHA(), new PrivAES128());
try {
agent.startAgent();
ResponseEvent response = agent
.snmpGetOperation(SnmpConstants.sysName);
System.out.println(response.getResponse());
// Similarly you can perform set operation.
} catch (IOException e) {
e.printStackTrace();
}
}
public void startAgent() throws IOException {
if (snmp == null) {
TransportMapping<? extends TransportIpAddress> transport = null;
if (protocol.equalsIgnoreCase("udp")) {
System.out.println("UDP Protocol selected.");
transport = new DefaultUdpTransportMapping();
} else {
System.out.println("TCP Protocol selected.");
transport = new DefaultTcpTransportMapping();
}
snmp = new Snmp(transport);
USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(
MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
transport.listen();
snmp.getUSM().addUser(
new OctetString(user),
new UsmUser(new OctetString(securityName), authProtocol
.getID(), new OctetString(authorizationPassword),
privacyProtocol.getID(), new OctetString(
privacyPassword)));
target = createUserTarget();
}
}
public ResponseEvent snmpSetOperation(VariableBinding[] vars)
throws IOException {
PDU setPdu = new ScopedPDU();
for (VariableBinding variableBinding : vars) {
setPdu.add(variableBinding);
}
return snmp.send(setPdu, target);
}
public ResponseEvent snmpGetOperation(OID oid) throws IOException {
PDU getPdu = new ScopedPDU();
getPdu.add(new VariableBinding(oid));
return snmp.get(getPdu, target);
}
private UserTarget createUserTarget() {
UserTarget target = new UserTarget();
target.setAddress(nmsIP);
target.setRetries(noOfRetries);
target.setTimeout(timeOut);
target.setVersion(3);
target.setSecurityLevel(3);
target.setSecurityName(new OctetString(securityName));
return target;
}
public long getTimeOut() {
return timeOut;
}
public void setTimeOut(long timeOut) {
this.timeOut = timeOut;
}
public int getNoOfRetries() {
return noOfRetries;
}
public void setNoOfRetries(int noOfRetries) {
this.noOfRetries = noOfRetries;
}
}
Adición de otras operaciones, como GETBULK serán relativamente fácil una vez que entienda cómo funciona GET y SET. Avíseme si necesita más aclaraciones en los comentarios.
- 1. Comenzando con T4
- 2. Comenzando con libpurple
- 3. Comenzando con SSE
- 4. Comenzando con Arduino?
- 5. DirectoryInfo.getFiles comenzando con
- 6. Comenzando con Android
- 7. Comenzando con CouchDB
- 8. Comenzando con OpenID
- 9. Comenzando con vBulletin development
- 10. Comenzando con audio programático
- 11. Comenzando con Pruebas unitarias
- 12. Comenzando con REST
- 13. Comenzando con Hessian
- 14. Comenzando con JAX-WS
- 15. Comenzando con OpenRasta
- 16. Comenzando con Gradle
- 17. Comenzando con Newspeak
- 18. Comenzando con "Mejorar PHP"
- 19. Comenzando con Java EE
- 20. Comenzando con Solr
- 21. Comenzando con MapReduce/Hadoop
- 22. Comenzando con SAML y PHP
- 23. Comenzando con mochiweb y Webmachine?
- 24. Obtener matriz comenzando con desplazamiento
- 25. Comenzando con la programación STK?
- 26. Comenzando con OpenGL ... en Android
- 27. comenzando con GTK + en Ubuntu
- 28. Comenzando con la programación paralela
- 29. Encontrar webelement con xpath comenzando con
- 30. GNUStep Comenzando
incluso podría ver friendlySnmp, que es abstracción sobre snmp4j .http: //www.friendlysnmp.org/ – Inv3r53