- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 snmp 获取交换机设备和型号名称。当我尝试获得 Nortell 或 Juniper 交换机时,它工作正常,但 Cisco 交换机会导致问题。我使用这个 oid 值:“.1.3.6.1.2.1.1.1.0”,但我也尝试了“1.3.6.1.2.1.1.1”。并且返回值为空。这是我的代码:
package list;
public class DeviceInfo {
private static String ipAddress = "10.20.X.XX";
private static String port = "161";
private static String oidValue = ".1.3.6.1.2.1.1.1";
private static int snmpVersion = SnmpConstants.version1; // or version2c
private static String community = "myreadcommunity";
public static void main(String[] args) throws Exception {
TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString(community));
comtarget.setVersion(snmpVersion);
comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
comtarget.setRetries(2);
comtarget.setTimeout(1000);
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(oidValue)));
pdu.setType(PDU.GET);
pdu.setRequestID(new Integer32(1));
Snmp snmp = new Snmp(transport);
System.out.println("Sending request.");
ResponseEvent response = snmp.get(pdu, comtarget);
if (response != null) {
System.out.println("Got results.");
PDU responsePDU = response.getResponse();
if (responsePDU != null) {
int errorStatus = responsePDU.getErrorStatus();
int errorIndex = responsePDU.getErrorIndex();
String errorStatusText = responsePDU.getErrorStatusText();
if (errorStatus == PDU.noError) {
System.out.println("Switch Name: = " + responsePDU.getVariableBindings());
System.out.println(responsePDU.size());
} else {
System.out.println("Error");
System.out.println("Error code: " + errorStatus);
System.out.println("Error Name: " + errorStatusText);
}
} else {
System.out.println("NULL");
}
} else {
System.out.println("Error: Timeout ");
}
snmp.close();
}
}
最佳答案
我建议首先确保您确实从交换机获得 snmp 响应。我怀疑 snmp 没有在交换机上完全配置,并且您的代码超时而不是 snmp 响应。
例子:
$ tcpdump udp 和端口 161
tcpdump:详细输出被抑制,使用 -v 或 -vv 进行完整协议(protocol)解码
监听 eth0,链路类型 EN10MB(以太网),捕获大小 262144 字节
10:36:26.980138 IP host.example.com.41226 > rtr.example.com.snmp: GetRequest(28) system.sysName.0
10:36:26.983971 IP rtr.example.com.snmp > host.example.com.41226: GetResponse(43) system.sysName.0="rtr.example.com"
由于您正在执行 snmp GET 请求,因此您的 oid 必须以“.0”结尾。响应oid sysName.0返回设备名
$ snmptranslate -IR -On sysName.0
.1.3.6.1.2.1.1.5.0
例子:
$ snmpget -v1 -c public rtr sysName.0
SNMPv2-MIB::sysName.0 = STRING: rtr.example.com
您正在使用的 oid:
$ snmptranslate -IR -On sysDescr.0
.1.3.6.1.2.1.1.1.0
不太可能提供设备名称甚至确切型号。
$ snmpget -v1 -c public rtr sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: 思科互联网操作系统软件
IOS (tm) C2600 软件 (C2600-IPBASE-M),版本 12.3(6c),发布软件 (fc1)
版权所有 (c) 1986-2004 思科系统公司。
由 kellythw 于 2004 年 7 月 20 日星期二 05:24 编译
可以使用 sysObjectID 请求设备型号:
$ snmptranslate -IR -On sysObjectID.0
.1.3.6.1.2.1.1.2.0
$ snmpget -v1 -c public rtr sysObjectID.0
SNMPv2-MIB::sysObjectID.0 = OID:SNMPv2-SMI::enterprises.9.1.469
您可以通过在 CISCO-PRODUCTS-MIB
中查找来解码响应
关于java - 通过snmp获取设备名称和型号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36645080/
在了解如何检测用户设备后:iOS - How to get device make and model? 我制作了一个快速测试应用程序以根据设备显示警报。我没有从这段代码中得到任何警告。我在这里错过了
我有一个名为 test.rb 的模型,当我在 Controller 中使用 @tests=Test.new 时,出现以下错误。有人可以解决这个问题吗? “Test:Module 的未定义方法‘新’”
我必须从不同的网络服务和我自己的数据库中获取数据,并在网站上显示之前组合这些数据。 执行此操作的最佳方法是什么?我更喜欢为 Web 服务和数据库编写单独的模型。如何将不同数据源的模型类组织到不同的文件
我必须从不同的网络服务和我自己的数据库中获取数据,并在网站上显示之前组合这些数据。 执行此操作的最佳方法是什么?我更喜欢为 Web 服务和数据库编写单独的模型。如何将不同数据源的模型类组织到不同的文件
我正在开发一种模糊搜索机制。我在数据库(mysql)(英文和俄文名称)中有汽车品牌/型号和城市 - 大约 1000 项。用户可以输入错误或翻译中的单词。现在我从 db 中检索所有这些单词,并将循环中的
问题 我在一家拥有大量现场员工的公司工作,他们都配发了 iPhone。但这些手机的型号各不相同,没有早于 iPhone 4 的。我需要一种快速的方法来确定哪个人拥有哪种型号的 iPhone,因为该数据
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: Determine device (iPhone, iPod Touch) with iPhone SDK H
我有我的应用程序的故障转储。我的应用程序失败,因为一些用户说“无效指令”试图执行我在那里的一些 SSSE 指令。 在 WinDBG 中,如何找出 CPU 型号,以便找出其指令集,并支持该指令集,或更新
这是我的想法(原谅 Django 格式): class VehicleMake(Model): name = CharField(max_length=50) class VehicleMod
我知道 before_filter 仅适用于 Rails 中的 Controller ,但我想要一个模型这样的东西:每当我的模型中的一个方法被调用时,我想运行一个方法来确定被调用的方法是否应该运行。从
我按以下方式编写代码 #define isiPhone6 ( [[UIScreen mainScreen] bounds].size.height == 667)?TRUE:FALSE #define
我正在使用 Apache Mahout 解决二进制分类问题。我使用的算法是 OnlineLogisticRegression,我目前拥有的模型强烈倾向于产生 1 或 0 的预测,没有任何中间值。 请提
我正在使用 mysql 查询返回适合 php 中某些汽车的产品数组,如下所示; array { [0]=> array(3) { ["sku"]=> string(16) "123a "
有谁知道在 Android 下获取绑定(bind)蓝牙设备的制造商和型号的方法吗?例如,如果我与蓝牙耳机配对,我希望能够确定该耳机的制造商和型号。 谢谢! 最佳答案 目前在 Android 中没有公共
如果我有 3 个模型要连接怎么办? 例如: 用户可以对许多不同的应用程序拥有许多不同的权限。 所以我需要一个表来存储: user_id permission_id application_id has
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我正在尝试为 XS Max 定制设计。之前我只是通过检查 main.bound.screen.height 来识别设备,对于 XS Max,根据此网站:https://www.paintcodeapp
如果我使用 ng-model 作为输入字段并将其清空,则 Angular 将其设置为 '' 而不是 null,即使它之前为 null。 这对我来说是一个问题,因为如果输入字段为空,我需要将 null
我需要获取型号,例如:对于 iPhone 6,我想要的型号是 N61AP 而不是 iPhone 7,2。我在objective-c中需要这个。 我尝试了一些方法,但我得到的只是'iPhone 7,2'
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我是一名优秀的程序员,十分优秀!