标签: snmp4j

SNMP4J入门

我需要在SNMP4J中创建一个代理,但是关于如何开始的文档很差.有没有人有任何SNMP4J的经验,可以给我一个关于如何开始的想法?谢谢.

java snmp snmp4j

12
推荐指数
1
解决办法
2万
查看次数

用于Java的SNMP库

我需要对各种SNMP库进行可行性研究.目前我正在使用SNMP4J.我的要求是将各种库与其功能进行比较.我无法找到任何有用的参考链接.请有人建议任何链接.

java snmp libraries snmp4j

10
推荐指数
1
解决办法
1万
查看次数

嵌入式SNMP4j日志访问失败并成功

我正在使用SNMP4j在java中编写代理,并且进展顺利.我可以获得并设置有价值(仅限SNMPv1,但v3即将推出).

我的下一个要求是专门登录我的应用程序日志(而不是SNMP4J日志)这三件事:

  1. 新用户登录
  2. 用户从中尝试新的失败SNMP连接
  3. 用于通过from写入值的SNMP SET.

我使用org.snmp4j.log.LogAdapter将SNMP4j日志记录管道输入到我的调试日志中,但这不是我想要的特定日志记录.

我使用org.snmp4j.event.AuthenticationFailureListener来记录验证失败的时间.这似乎只是SNMPv3,并没有给我失败的用户名.

有谁知道如何做到这一点?听众的建议似乎部分到位,还有更多我找不到的东西吗?我可以使用源代码并在需要的地方添加我自己的日志记录,但这有什么许可证含义?SNMP使用Apache 2.0许可证

logging snmp4j

7
推荐指数
1
解决办法
515
查看次数

ResponseListener 在 snmp4j 中如何工作

我编写了一个简单的程序来了解 snmp4j 异步请求/响应的工作原理:

TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
transport.listen();

Address targetAddress = GenericAddress.parse("udp:192.168.1.116/161");
CommunityTarget target = new CommunityTarget();
target.setAddress(targetAddress);
target.setCommunity(new OctetString("nid"));
target.setRetries(0);
target.setTimeout(30000);
target.setVersion(SnmpConstants.version2c);

ResponseListener listener = new ResponseListener() {
    @Override
    public void onResponse(ResponseEvent event) {
        ((Snmp) event.getSource()).cancel(event.getRequest(), this);
        System.out.println("Received response PDU is: " + event.getResponse());
        System.out.println("response listener thread id: " + Thread.currentThread().getId());
        System.out.println("**********************************");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
};

System.out.println("main thread id: " + Thread.currentThread().getId());
for …
Run Code Online (Sandbox Code Playgroud)

java multithreading asynchronous snmp snmp4j

5
推荐指数
1
解决办法
3587
查看次数

检查通过SNMP进入的请求

所以我还在学习SNMP,请放心.我正在使用snmp4j,而不仅仅是库,但是我已经加载了源代码,如果它能得到我需要的东西,我不反对修改源代码.我编写了一个代理和一个测试客户端.我想要做的是能够检查来自测试客户端的请求,特别是监听对特定OID的"设置"请求.

我正在考虑这样做的当前方式是在运行snmp4j方法fireProcessMessage(位于包中org.snmp4j.transport.DefaultUdpTranportMapping)后立即捕获请求,但我不知道代理如何查询自己的mib以获取oid.是否存在代理用于从其mib获取OID值的方法?

或者有更好的方法来捕获特定的SET请求吗?甚至可以做我想做的事情吗?基本上我想要做的是如果客户端将某个OID值设置为1(true),则运行另一个进程.

snmp snmp4j

4
推荐指数
1
解决办法
801
查看次数

Java SNMP4J Trap应用程序正在冻结GUI

我在Java中有一个SNMP陷阱应用程序,旨在侦听SNMP代理并在JFrame窗口中的JTextArea上打印接收到的SNMP消息.

下面的第一部分是我的源代码,显示了TrapReceiver类的内容.在这个类中,listen方法是充分利用工作的地方.该类在JFrame类中进行实例化,我打算在上面提到的JTeaxtArea上显示消息.我将JTextArea对象的引用,SNMP代理URL和端口发送到TrapReceiver类的构造函数中,然后调用TrapReceiver对象的run方法以在JFrame实例以外的单独线程中开始执行.下面的第二部分展示了我如何在JFrame实例中实例化TrapReeceiver类.

当我运行应用程序时,我注意到JFrame实例(即GUI)正在冻结,并且没有在JFrame实例中提到的JTeaxtArea上打印消息,该实例实例化下面第一部分中所示的类TrapReeceiver.

我的问题是为什么JFrame实例(即GUI)是冻结的,尽管TRapReceiver本身是作为一个单独的线程执行的?此外,我想知道这个冻结问题的可能解决方案是什么.提前致谢.

PS:我已经验证了TrapReceiver工作正常并且可以在没有GUI的情况下作为独立应用程序运行时将消息打印到标准输出,但是由于某些可能的线程同步问题,这个GUI正在以某种方式冻结.我尝试运行TrapReceiver而不用线程,即使在这种情况下,GUI仍然处于冻结状态.

第一部分

 package com.[Intenionally removed].snmp;

 import java.io.IOException;
 import javax.swing.JTextArea;
 import org.snmp4j.*;
 import org.snmp4j.mp.MPv1;
 import org.snmp4j.mp.MPv2c;
 import org.snmp4j.security.Priv3DES;
 import org.snmp4j.security.SecurityProtocols;
 import org.snmp4j.smi.OctetString;
 import org.snmp4j.smi.TcpAddress;
 import org.snmp4j.smi.TransportIpAddress;
 import org.snmp4j.smi.UdpAddress;
 import org.snmp4j.transport.AbstractTransportMapping;
 import org.snmp4j.transport.DefaultTcpTransportMapping;
 import org.snmp4j.transport.DefaultUdpTransportMapping;
 import org.snmp4j.util.MultiThreadedMessageDispatcher;
 import org.snmp4j.util.ThreadPool;

 public class TrapReceiver implements CommandResponder, Runnable {

   private String targetSnmpAgentURL;
   private int targetSnmpAgentPort;
   private JTextArea outConsole;

   public TrapReceiver() {
   } 

   public TrapReceiver(JTextArea outConsole) {
       this.outConsole = outConsole;
   }


   public TrapReceiver(JTextArea outConsole, String targetSnmpAgentURL, int  targetSnmpAgentPort) {
       this.targetSnmpAgentURL = targetSnmpAgentURL; …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading jframe snmp4j

4
推荐指数
1
解决办法
1579
查看次数

使用SNMP监视JVM

我正在使用snmp来监控一些服务器(主要是win2k3),在我上网的过程中,我找到了Oracle用来监控JVM,JVM-MANAGEMENT-MIB的MIB.到目前为止我用它做的是:

  • 使用snmp.acl和management.properties配置JVM
  • 使用mibcc编译JVM-MANAGEMENT-MIB并替换mib.bin.

通过这些步骤,我认为我很高兴尝试.所以我用snmp4j创建了一个java程序,当我尝试从JVM mib调用OID时,我遇到了一个错误Request timed out.奇怪的是,我只编译JVM-MANAGEMENT-MIB,所以我应该只能访问那些OID,对吧?但事实并非如此,我仍然可以访问cpu使用情况,进程数量......

那么我错过了什么?谢谢

jvm snmp snmp4j mib

3
推荐指数
1
解决办法
3179
查看次数

标签 统计

snmp4j ×7

snmp ×5

java ×4

multithreading ×2

asynchronous ×1

jframe ×1

jvm ×1

libraries ×1

logging ×1

mib ×1

swing ×1