Cómo puedo enviar capturas snmpv2 desde la aplicación Java. Intenté hacer un ejemplo en snmp4j, pero no funcionó.Enviar trap v2 en Java
Respuesta
Uso SNMP4J para esto.
This javadoc podría ayudarlo a escribir su código. Usted puede utilizar el método Snmp.trap()
Editar:
Bueno, no tengo código de mi propia en este momento, pero puede referirse this uno. Debe utilizar Snmp.notify() para enviar trampa V2 en lugar de Snmp.trap() ya que trap() solo admite el envío de trampas V1.
¿tiene un ejemplo simple, cómo hacerlo bien? gracias! –
editó mi respuesta para proporcionar un enlace al código – Gopi
Me gustaría ir a la biblioteca snmp4j http://www.snmp4j.org/.
import org.snmp4j.*;
import org.snmp4j.event.*;
...
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setVersion(SnmpConstants.version2c);
PDU request = new PDU();
request.setType(PDU.V2TRAP);
request.setGenericTrap(PDUv2.COLDSTART);
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.listen();
snmp.sendPDU(request, target, null, listener);
¿tiene un ejemplo simple, cómo hacerlo bien? gracias! –
Me tomó algún tiempo, pero finalmente me di cuenta de cómo utilizar SNMP4J para enviar una trampa: Espero que ayude ..
public static void main(String[] args) throws Exception {
// Create PDU
PDU trap = new PDU();
trap.setType(PDU.TRAP);
OID oid = new OID("1.2.3.4.5");
trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, oid));
trap.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(5000))); // put your uptime here
trap.add(new VariableBinding(SnmpConstants.sysDescr, new OctetString("System Description")));
//Add Payload
Variable var = new OctetString("some string");
trap.add(new VariableBinding(oid, var));
// Specify receiver
Address targetaddress = new UdpAddress("10.101.21.32/162");
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setVersion(SnmpConstants.version2c);
target.setAddress(targetaddress);
// Send
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
snmp.send(trap, target, null, null);
}
¡Gracias! ¿Son obligatorios los 'sysUpTime' y' sysDescr'? – Matthieu
Un buen ejemplo que envía trampa V1 y V2 notificación. Solo necesitaba modificar el puerto a 162 y la forma de configurar el sysUpTime para ambas versiones, V1 y V2.
Probado con snmp4j-1.10.1 y snmp4j-2.1.0.
http://www.techdive.in/snmp/snmp4j-trap-sender
package snippet;
/**
* Copyright 2010 TechDive.in
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* <a href="http://www.apache.org/licenses/LICENSE-2.0" title="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
import java.util.Date;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.PDUv1;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.IpAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.TimeTicks;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class TrapSender {
public static final String community = "public";
// Sending Trap for sysLocation of RFC1213
public static final String trapOid = ".1.3.6.1.2.1.1.6";
public static final String ipAddress = "192.168.1.52";
public static final int port = 162;
public TrapSender() {
}
public static void main(String[] args) {
TrapSender snmp4JTrap = new TrapSender();
/* Sending V1 Trap */
snmp4JTrap.sendSnmpV1Trap();
/* Sending V2 Trap */
snmp4JTrap.sendSnmpV2Trap();
}
/**
* This methods sends the V1 trap to the Localhost in port 163
*/
public void sendSnmpV1Trap() {
try {
// Create Transport Mapping
TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();
// Create Target
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString(community));
comtarget.setVersion(SnmpConstants.version1);
comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
comtarget.setRetries(2);
comtarget.setTimeout(5000);
// Create PDU for V1
PDUv1 pdu = new PDUv1();
pdu.setType(PDU.V1TRAP);
pdu.setEnterprise(new OID(trapOid));
pdu.setGenericTrap(PDUv1.ENTERPRISE_SPECIFIC);
pdu.setSpecificTrap(1);
pdu.setAgentAddress(new IpAddress(ipAddress));
long sysUpTime = 111111;
pdu.setTimestamp(sysUpTime);
// Send the PDU
Snmp snmp = new Snmp(transport);
System.out.println("Sending V1 Trap to " + ipAddress + " on Port " + port);
snmp.send(pdu, comtarget);
snmp.close();
} catch (Exception e) {
System.err.println("Error in Sending V1 Trap to " + ipAddress + " on Port " + port);
System.err.println("Exception Message = " + e.getMessage());
}
}
/**
* This methods sends the V2 trap to the Localhost in port 163
*/
public void sendSnmpV2Trap() {
try {
// Create Transport Mapping
TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();
// Create Target
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString(community));
comtarget.setVersion(SnmpConstants.version2c);
comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
comtarget.setRetries(2);
comtarget.setTimeout(5000);
// Create PDU for V2
PDU pdu = new PDU();
// need to specify the system up time
long sysUpTime = 111111;
pdu.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(sysUpTime)));
pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, new OID(trapOid)));
pdu.add(new VariableBinding(SnmpConstants.snmpTrapAddress, new IpAddress(ipAddress)));
// variable binding for Enterprise Specific objects, Severity (should be defined in MIB file)
pdu.add(new VariableBinding(new OID(trapOid), new OctetString("Major")));
pdu.setType(PDU.NOTIFICATION);
// Send the PDU
Snmp snmp = new Snmp(transport);
System.out.println("Sending V2 Trap to " + ipAddress + " on Port " + port);
snmp.send(pdu, comtarget);
snmp.close();
} catch (Exception e) {
System.err.println("Error in Sending V2 Trap to " + ipAddress + " on Port " + port);
System.err.println("Exception Message = " + e.getMessage());
}
}
}
@ durron597 Entonces, ¿qué pasa si el enlace muere? Pegar el código es una buena idea. –
Un muy buen ejemplo se puede encontrar aquí:
http://shivasoft.in/blog/java/snmp/create-snmp-client-in-java-using-snmp4j/
Pero no es un ejemplo de enviar una trampa. – EJP
- 1. Jquery trap form submit()
- 2. NTLM V2 SSO Java Servlet Filter
- 3. Ruby for loop a trap?
- 4. String de Java análisis - {k1 = v1, v2 = k2, ...}
- 5. Boost.Log vs. Boost.Log v2
- 6. Defina MIB y envíe SNMP trap en .net
- 7. Enviar correo a través de gmail con Send-MailMessage de PowerShell V2
- 8. Convertir matriz plana [k1, v1, k2, v2] al objeto {k1: v1, k2: v2} en JavaScript?
- 9. ASP.NET MVC V2 - Buddy Classes
- 10. sql: BETWEEN v1 AND v2
- 11. T-SQL ACTUALIZACIÓN condicional (v2)
- 12. Cómo ejecutar localtunnel v2 correctamente
- 13. ¿Cómo debo depurar los errores Trace/BPT Trap en Rails?
- 14. ¿Cómo enviar una solicitud HTTP en Java?
- 15. MessagingExceptionIOException al enviar un mensaje en java?
- 16. Cómo enviar un encabezado HTTP en java
- 17. bash trap of TERM - ¿Qué estoy haciendo mal?
- 18. Actualizar Glassfish v2 a JPA 2.0?
- 19. Actualizar/Actualizar mapas: Google Maps API V2
- 20. ¿Los diferentes simuladores de 68k tienen diferentes tareas de TRAP?
- 21. Magento API v2 Error de PHP
- 22. Java: ¿cómo enviar una solicitud XML?
- 23. ¿Cómo puedo enviar un SMS desde Java?
- 24. ¿Cómo enviar correos electrónicos firmados de java?
- 25. Java: ¿Es posible enviar SMS desde una aplicación Java?
- 26. Compilación de nuevo tipo en PowerShell v2 - Cookie Aware WebClient
- 27. Agregar múltiples marcadores en Google Map usando api v2
- 28. Rellene una columna en un archivo CSV con POWERSHELL V2
- 29. Magento API: Publicar un nuevo método en soap V2
- 30. ¿Qué es la URL de SOAP V2 en Magento 1.7.0.0
duplicados http://stackoverflow.com/questions/3329378/sending-traps-from-a- aplicación java –