【问题标题】:What snmp OID should I watch to see if my printers and switches is up an running我应该查看什么 snmp OID 以查看我的打印机和交换机是否正在运行
【发布时间】:2012-04-24 09:47:05
【问题描述】:

我是snmp 的新手,我想弄清楚我应该获取/捕获什么 OID 以查看我的打印机、交换机(和服务器)是否正在运行?我不需要知道细节——只是一个简单的测试。我已经成功地从 bash 和 iReasoning MIB browser 的设备获取、getbulk (和 walk)请求。

编辑:

也许

.1.3.6.1.2.1.1.3.0
Name/OID: sysUpTime.0; Value (TimeTicks): 194 hours 43 seconds (69844352)

就是用来做这个的!?当出现问题时会发生什么? - 这会立即重置吗? - 或者它会停止计数吗?还是只是上次开机后的时间?

【问题讨论】:

  • 启动和运行是什么意思?你是说在线状态?服务器可以在线,但这并不一定意味着它运行良好。如果你只需要在线状态,你可以去 ping 或nmap。否则我不知道是否存在 OID。我的意思是有一些与特定硬件或进程状态相关的 OID,但不是一个广泛的变量,我不记得了。
  • @raz3r:我可以看到问题对于 server 来说并不简单,所以请忽略这部分。启动并运行,对于打印机,我的意思是它在线(可以看到它回答了 snmp 请求),它在打印机上的显示中显示就绪(或当前正在打印),所以没有卡纸,或者停滞不前的工作。对于交换机:它在线,内部计算机没有挂起或任何严重错误(通常写入日志)。

标签: bash networking snmp


【解决方案1】:

打印机

您应该使用Printer MIBv2 来监控卡纸的打印机错误状态...

  • hrPrinterDetectedErrorState 报告打印机错误,例如碳粉不足、卡纸等...RFC 包含有关特定代码含义的详细信息
  • hrDeviceStatus 将揭示打印机处理任务的全局能力。欲了解更多信息,请参阅Printer MIBv2, Section 2.2.13.2

sysUpTime.0 是一个 OID,它报告系统的 SNMP 堆栈已启动的时间(参考 RFC 1213: MIB-II)。如果此值返回并递增,则 99% 的安全赌注是打印机已启动。大多数人使用sysUpTime 来检测设备是否因某种原因重启;如果发生这种情况,您会看到 sysUpTime.0 突然减少,除非您的最后一个值是 248 天左右(32 位计数器会滚动)。

以太网交换机

检查以太网交换机的基本运行状况通常通过检查sysDescr.0sysUpTime.0 来完成;如果您关心特定链接的上/下状态,则此启发式的问题就来了...此时,您需要检查ifOperStatus 中的值,该值由ifIndex 索引并使用ifName 中的接口名称.请参阅以下示例...

[mpenning@Hotcoffee ~]$ ## Walk ifName correlated to ifIndex
[mpenning@Hotcoffee ~]$ snmpwalk -v 2c -c Public 172.25.116.6 .1.3.6.1.2.1.31.1.1.1.1
iso.3.6.1.2.1.31.1.1.1.1.1 = STRING: "Fa0/0"
iso.3.6.1.2.1.31.1.1.1.1.2 = STRING: "Nu0"
[mpenning@Hotcoffee ~]$ ## Walk ifOperStatus (up==1)
[mpenning@Hotcoffee ~]$ snmpwalk -v 2c -c Public 172.25.116.6 .1.3.6.1.2.1.2.2.1.8
iso.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.8.2 = INTEGER: 1
[mpenning@Hotcoffee ~]$

因此我们从示例中知道接口“Fa0/0”(索引:1)和“Nu0”(索引:2)的 ifOperStatus 均为“up”;索引值是结果的 OID 中返回的最后一个整数。

脚本

我假设您将使用bash 作为您的监控脚本;如果是这样,请查看Net-SNMP 以获得您的 SNMP 管理器

【讨论】:

  • 我想创建一个http状态页面,使用php调用perl脚本,使用bash命令。 perl 脚本从文件中读取 ip,如果设备正在运行,将发送一些 snmpget 命令进行测试。你觉得这一切都好吗? - 或者有更好的方法吗?
  • 有很多事情取决于详细的要求......如果这是一个内部公司应用程序,你描述的听起来不错;但是,您可能可以直接在 PHP 中完成所有操作,如果这是您最熟练的操作的话。您应该能够直接从 PHP 或 Perl 进行 snmpgetsnmpwalk 调用。我鼓励人们使用他们最流利的语言,除非它不能满足你的需要
猜你喜欢
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 2013-06-09
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
相关资源
最近更新 更多