WEB开发网
开发学院操作系统Linux/Unix 系统管理员工具包: 使用 SNMP 数据 阅读

系统管理员工具包: 使用 SNMP 数据

 2008-11-13 08:29:29 来源:WEB开发网   
核心提示: 若要获得某个特定的信息部分,您可以使用 snmpget 命令,系统管理员工具包: 使用 SNMP 数据(5),该命令直接读取一个或多个 OID,并报告它们的值,信息以绑定 OID 与对应值的信息散列的形式返回, 清单 5 显示了一个非常简单的脚本,对于特殊类型,该命令还将其转换为可读的格式

若要获得某个特定的信息部分,您可以使用 snmpget 命令,该命令直接读取一个或多个 OID,并报告它们的值。对于特殊类型,该命令还将其转换为可读的格式。例如,要获取系统描述和正常运行时间,可以使用以下命令(在清单 4 中)。

清单 4. 获取系统描述和正常运行时间

$ snmpget -v1 -c public t1000 system.sysUpTime.0 system.sysContact.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (867411) 2:24:34.11
SNMPv2-MIB::sysContact.0 = STRING: "System administrator"

孤立地看,所有这些方法都是非常有用的,但实际上,您需要监视和跟踪多台计算机和多个 OID,以了解全面的情况。这可以通过使用多个可编程的 SNMP 接口之一来实现。

以编程的方式获取 SNMP 数据

用于 Perl 的 Net::SNMP 模块使用 SNMP 从一个或多个代理获得信息。类似地,其他语言可以使用其他接口,包括 Python、Ruby 和 PHP(请参见参考资料)。接口的工作方式是创建一个与所需主机上的 SNMP 代理通信(并在必要时进行身份验证)的会话。一旦拥有了活动和有效的会话,您就可以直接从代理请求一个或多个 OID 的数据。信息以绑定 OID 与对应值的信息散列的形式返回。

清单 5 显示了一个非常简单的脚本,此脚本将获得命令行上提供的每个主机的系统正常运行时间。

清单 5. 使用 Perl 和 Net::SNMP 获得单个 SNMP 代理属性

#! /usr/local/bin/perl
use strict;
use Net::SNMP;
my $uptimeOID = '1.3.6.1.2.1.1.3.0';
foreach my $host (@ARGV)
{
  my ($session, $error) = Net::SNMP->session(
    -hostname => $host,
    -community => 'public',
    -port   => 161
    );
  warn ("ERROR for $host: $errorn") unless (defined($session));
  my $result = $session->get_request(
    -varbindlist => [$uptimeOID]
    );
  if (!defined($result))
  {
    warn ("ERROR: " . $session->error . "n");
  }
  else
  {
    printf("Uptime for %s: %sn",$host, $result->{$uptimeOID});
  }
  $session->close;
}

上一页  1 2 3 4 5 6 7 8  下一页

Tags:系统 管理员 工具包

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接