clsnmp 命令

用途

AIX® clsnmp 命令提供来自 AIX shell 的 SNMP 管理器函数,用于查询 SNMP 代理程序以获取网络管理信息。

语法

clsnmp [-d DebugLevel] [-h TargetHost] [-c Community] [-t TimeOutValue] [-r RetryNumber] [-n NonRepeaters] [-m MaxRepetitions] [-p PortNumber] [-v] [-f ConfigurationFile] [-?]Function[MIBVariable[VariableType] [Value] [ ... ] )

描述

使用 clsnmp 命令对代理程序发出 SNMP 请求并处理由代理程序返回的 SNMP 响应。 AIX clsnmp 命令支持发出 SNMPv1, SNMPv2c和 SNMPv3 请求。

SNMP 请求类型

findname
发送请求,进行搜索以获取文本名称(对于给定的 MIBVariable 输入),其内部 ASN.1 值与输入 ASN.1 值最佳匹配。 搜索首先检查 /etc/mib.defs 文件,如果找不到匹配的文本名称,那么继续检查编译的 MIB。 每个 clsnmp findname 调用仅允许一个 MIBVariable
get
向 SNMP 代理程序发送请求,以获取特定的管理信息库(MIB)变量。 然后 clsnmp 等待响应或超时。
getbulk
获取由 OID 或 MIB 变量名指定的 MIB 树中的变量值。 单一的 getbulk 与使用 clsnmp 命令和 SNMP 代理程序之间进行少量数据交换的一系列 getnext 执行相同的功能。
getnext
向 SNMP 代理程序发送请求,以获取按词典排序的跟在指定的 MIBVariable 后的 MIB 变量。 然后 clsnmp 等待响应或超时。
set
向 SNMP 代理程序发送请求以获取特定的 MIB 变量。 然后 clsnmp 等待响应或超时。
trap
侦听 SNMP 陷阱,并在其出现时显示 trap 信息。 使用缺省值,熟知端口 162 或 -p 选项指定的端口号。 clsnmp trap 功能继续侦听陷阱,直到进程被杀死或取消。
walk
对指定的前缀发出 getnext 请求,然后只要有匹配指定的前缀的变量就继续发出 getnext 请求。 前缀可以是完整的对象标识的前导部分。

用途

set 操作并非在所有 MIB 对象上受支持。 如果管理 MIB 对象的代理程序或子代理程序不支持 SET,那么可能拒绝 set 操作。

getbulk 是一个 SNMPv2 功能。 如果目标代理程序只支持 SNMPv1,那么目标代理程序忽略您的请求。 结果,请求超时。

功能关键字不区分大小写。 标志、变量名和值区分大小写。

要同时监听来自NetViewSNMP 和AIX clsnmp的陷阱,请在clsnmp命令中使用-p PortNumber参数。 在一个 IP 地址上一次只能有一个管理应用程序可以在一个端口上侦听。 在 clsnmp 陷阱命令上指定 -p 启用要使用的除熟知端口 162 以外的端口。 这两个端口都必须配置为代理程序陷阱目标。

未认证(通过使用可接受的共用名或用户名)的 clsnmp 命令将超时。

clsnmp 命令使用两个配置文件:/etc/mib.defsclsnmp.conf。 样本文件在 /usr/samples/snmpdv3 目录中提供。

clsnmp 命令支持发送 SNMPv1、SNMPv2c 和 SNMPv3 请求。 clsnmp 用于确定它是否应该发送 SNMPv1、SNMPv2c 或 SNMPv3 请求的文件是 clsnmp.conf 文件。 如果通过 -h 参数指定的目标匹配 clsnmp.conf 文件中的 winSNMP 名称,那么 clsnmp 使用在条目上指定的参数发送请求。 如果不指定 -h 参数,那么该请求将作为 SNMPv1request 发送。

标志

描述
-c 社区 指定用于访问目标 SNMP 代理程序上的指定变量的共用名。 如果不指定共用名,那么缺省名为 public。 当使用基于用户的安全模型时,不需要共用名。
注: 社区名称区分大小写。
-d DebugLevel 指定调试级别。 缺省级别为 0,意味着无调试。 调试级别越高,显示的消息数越大。 调试级别为 0-4。
-f ConfigurationFile 指定配置文件的完整路径和文件名。
-h TargetHost 指定要向其发送请求的目标主机。 TargetHost 可以是 IPv4 地址、IPv6 地址、主机名或 clsnmp.conf 配置文件中的 winSNMP 名称。 如果不指定主机,那么缺省值为您的本地主机。
-m MaxRepetitions 只适用于 getbulk。 如果功能请求不是 getbulk,那么忽略它。 最大重复是要为每个变量绑定对(在第一个“-n 数字”后续作业后)返回的按字典排序的后续作业的数目。 例如,以后续作业“-n 数字”+1 开头返回每个变量绑定对的后续作业的“-m 数字”。 缺省值为 10。
-n NonRepeaters 只适用于 getbulk 请求。 如果功能请求不是 getbulk,那么忽略它。 NonRepeaters 是变量绑定对(名称/值)的数目,从第一个开始,只为此返回单一的后续作业。 缺省值是 0。
-p PortNumber 指定侦听陷阱的端口号。 如果不指定端口号,那么 clsnmp trap 功能在熟知端口 162(clsnmp 陷阱的缺省端口)上侦听。
-r RetryNumber 指定如果超时要重新尝试命令的最大次数。 缺省值为 2。
-t TimeOutValue 指定 clsnmp 命令等候来自 SNMP 代理程序的应答的时间量(以秒为单位)。 缺省值是 3。
-v 指定来自请求的输出应该使用详细的输出显示,例如,使用文本名称替换 MIB 对象标识。
-? 显示帮助信息。

参数

描述
FUNCTION 指定要执行的 SNMP 功能/操作为下列其中一项:getgetnext getbulkset walktrapfindname
MIBVariable 指定管理信息库(MIB)对象(使用其对象描述符:文本名称)、使用 ASN.1 表示法的对象标识或二者的组合。 当与 walk 一起使用时,这是 MIB 对象前缀。 前缀可以是完整的对象标识的前导部分。 当与 findname 一起使用时,这是 ASN.1 表示法的对象标识。
VALUE 指定要由 SET 功能设置的值。 如果值中需要空格,那么必须将该值括在双引号 (") 中。 如果要将变量设置为也是类型的值,那么必须指定类型。
VariableType 指定正在设置的值的类型。 要完成 SNMP SET 请求,那么必须知道 SMI_type。 如果不指定类型,那么 clsnmp 首先搜索 /etc/mib.defs 文件,然后搜索编译的 MIB 以确定类型。 如果未查找到变量,那么返回错误。 如果指定了 VariableType,那么 VariableType 优先于可能在 MIB 中分配的任何类型。 VariableType 和值必须兼容。 例如,如果指定“number”类型和“foo”值,那么由于“foo”不是数字而返回错误。 VariableType 不区分大小写。 有效的变量类型是:
  • bitstring
  • 计数器 (counter)
  • counter32
  • counter64
  • display 或 displaystring
  • gauge
  • gauge32
  • 整数
  • integer32
  • ipaddress
  • nsapaddress
  • 空值
  • objectidentifier 或 OID
  • octetstring
  • opaque
  • opaqueascii
  • timeticks
  • uinteger

限制

在处理来自 clsnmp 管理器的 SNMPv1 协议请求期间,当 snmpdv3 守护程序遇到 SMI-v2 数据类型 MIB 时,它会跳过该 MIB,直到它找到 SMI-v1 数据类型 MIB 为止。

变通方法

应使用 SNMPv2 类型请求或 SNMPv3 类型请求来配置 clsnmp 管理器,以使用 snmpdv3 守护程序来转储所有 MIB 变量。

示例

  1. 获取 MIB 变量。
    1. 下面请求 MIB 对象 sysName.0
      clsnmp get sysName.0
      此命令的输出看起来类似于:
      1.3.6.1.2.1.1.5.0 = hostname.austin.ibm.com
    2. 下面请求 MIB 对象 myName.0,其中 myName/etc/mib.defs 文件中定义为由 sysName.0 标识的同一对象:
      clsnmp get myName.0
      此命令的输出看起来类似于:
      1.3.6.1.2.1.1.5.0 = myhostname.austin.ibm.com
    3. 下面通过 IPv6 地址请求 MIB 对象 sysName.0
      clsnmp -h 2000:1:1:1:209:6bff:feae:6d67 get sysName.0
      此命令的输出看起来类似于:
      1.3.6.1.2.1.1.5.0 = hostname.austin.ibm.com
  2. 获取下一个 MIB 变量。
    1. 以下请求下一个逻辑 MIB 对象:
      clsnmp getnext udp
      此命令的输出看起来类似于:
      1.3.6.1.2.1.7.1.0 = 653
    2. 以下请求下一个逻辑对象,使用 -v 选项显示具有文本名称(代替对象标识)的值:
      clsnmp -v getnext udp
      此命令的输出看起来类似于:
      udpInDatagrams.0 = 653
  3. 设置 MIB 变量。
    1. 以下将 MIB 对象 sysName.0 设置为值‘hostname.austin.ibm.com’:
      clsnmp set sysName.0  "hostname.austin.ibm.com"
      此命令产生类似于以下的输出:
      1.3.6.1.2.1.1.5.0 = hostname.austin.ibm.com
    2. MIB 对象 sysName.0 的值还可以使用 VariableType 参数设置以指定正在设置的值的类型,如以下示例中所示:
      clsnmp set sysName.0 displayname "hostname.austin.ibm.com"
      此命令产生类似于以下的输出:
      1.3.6.1.2.1.1.5.0 = hostname.austin.ibm.com
  4. 遍历 MIB 树。
    以下按名称返回所有以相同的对象标识前缀开头的对象,但具有较少的要在 clsnmp 命令和 SNMP 代理程序之间交换的数据包:
    clsnmp -h loopback -v -m 10 bulkwalk udp
    此命令的输出与以下类似:
    clsnmp -v walk udp 
    udpInDatagrams.0 = 653 
    udpNoPorts.0 = 22 
    udpInErrors.0 = 0 
    udpOutDatagrams.0 = 678 
    udpLocalAddress.0.0.0.0.7 = 0.0.0.0 
    udpLocalAddress.0.0.0.0.9 = 0.0.0.0 
    udpLocalAddress.0.0.0.0.13 = 0.0.0.0 
    udpLocalAddress.0.0.0.0.19 = 0.0.0.0 
    udpLocalAddress.0.0.0.0.37 = 0.0.0.0 
    udpLocalAddress.0.0.0.0.161 = 0.0.0.0 
    udpLocalAddress.0.0.0.0.5020 = 0.0.0.0 
    udpLocalPort.0.0.0.0.7 = 7 
    udpLocalPort.0.0.0.0.9 = 9 
    udpLocalPort.0.0.0.0.13 = 13 
    udpLocalPort.0.0.0.0.19 = 19 
    udpLocalPort.0.0.0.0.37 = 37 
    udpLocalPort.0.0.0.0.161 = 161 
    udpLocalPort.0.0.0.0.5020 = 5020
  5. 获取多个 MIB 变量。
    以下使用 getbulk 请求类型请求多个 MIB 对象。 getbulk 请求类型返回在命令上列出的一个或多个 MIB 对象的下一个逻辑对象。 在以下示例中, -n 选项指示仅对前两个变量(sysLocation 和 ifTable)请求下一个逻辑对象。 对于列表中的所有其他对象(tcp、udp 和 icmp),-m 选项指示请求 5 个副本。
    注: getbulk 请求类型是 SNMPv2 函数。 -h 参数指示主机、回送,在 clsnmp.conf 文件中定义为支持 SNMPv2 或 SNMPv3 的代理程序。
    clsnmp -h loopback -v -n 2 -m 5 getbulk sysLocation ifTable tcp udp icmp
    此命令产生类似于以下内容的输出:
    sysLocation.0 = Research Triangle Park, NC 
    ifIndex.1 = 1 
    tcpRtoAlgorithm.0 = 4 
    udpInDatagrams.0 = 782 
    icmpInMsgs.0 = 22 
    tcpRtoMin.0 = 0 
    udpNoPorts.0 = 22 
    icmpInErrors.0 = 0 
    tcpRtoMax.0 = 120 
    udpInErrors.0 = 0 
    icmpInDestUnreachs.0 = 22 
    tcpMaxConn.0 = -1 
    udpOutDatagrams.0 = 807 
    icmpInTimeExcds.0 = 0 
    tcpActiveOpens.0 = 1 
    udpLocalAddress.0.0.0.0.7 = 0.0.0.0 
    icmpInParmProbs.0 = 0
  6. 查找 ASN.1 变量的名称。
    以下发送请求进行搜索以获取给定 MIBVariable 输入的文本名称,其内部的 ASN.1 值与输入 ASN.1 值最佳匹配。 搜索从 /etc/mib.defs 文件开始,如果没有查找到,那么继续搜索编译的 MIB。 每个 clsnmp findname 调用仅允许一个 MIBVariable 。 例如,这可以使用类似于以下的命令完成:
    clsnmp findname 1.3.6.1.2.1.6.13.1.2
    此命令产生类似于以下内容的输出:
    1.3.6.1.2.1.6.13.1.2 found as: tcpConnLocalAddress
    类似的示例是:
    clsnmp findname 1.3.6.1.2.1.6.13.1.2.0
    此命令产生类似于以下内容的输出:
    1.3.6.1.2.1.6.13.1.2.0 found as: tcpConnLocalAddress.0
    另一个类似的示例是:
    clsnmp findname 1.3.6.1.2.
    此命令产生类似于以下内容的输出:
    1.3.6.1.2. found as: mgmt
  7. 发出 SNMPv3 请求。
    1. 如果 winSnmpName 条目使用类似于以下(所有都在一行上)的条目在管理器主机上的 /etc/clsnmp.conf 文件中配置:
      target1   9.3.149.26 snmpv3 u1 -          - AuthNoPriv   HMAC-SHA
      76784e5935acd6033a855df1fac42acb187aa867 -   -
      并且在 snmpd 代理程序机器 9.3.149.26 上,用户 u1 正确配置,那么我们可以在管理器主机上发出命令:
      clsnmp -v -h target1 get sysName.0
      此命令将产生类似于以下的输出:
      sysName.0 = somehostname.austin.ibm.com
    2. 发出陷阱命令很简单,如下所示:
      clsnmp trap
      注: 如果接收到的陷阱的安全模型为 SNMPv3,请确保在侦听陷阱的管理站上正确配置了/etc/clsnmp.conf 文件以接收陷阱。

文件

描述
/etc/clsnmp.conf clsnmp 命令的配置文件。
/etc/mib.defs 定义 SNMP 代理程序和管理器应当识别和处理的管理信息库(MIB)变量。