自定义SNMP Agent扩展

本文详细介绍如何通过自写的小程序实现SNMP Agent,包括软件安装、配置SNMP服务及客户端访问步骤。适用于希望深入了解SNMP监控原理的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过自己写的小程序(Agent),可以利用SNMP服务获得主机的某些信息(比如服务状态等)。具体步骤如下:
  1. 软件安装
    在被监控的主机上安装snmp服务器软件(比如net-snmp-5.1.2-11.EL4.10),在监控机上安装客户端软件(比如,net-snmp-utils-5.1.2-11.EL4.10)。
  2. 配置SNMP服务。
    可以使用snmpconf命令。选择配置文件后,选择“2:  Extending the Agent”,在选择“2:  Run a command that intepretes the request for an entire tree”。然后输入OID,(比如:.1.3.6.1.4.1.96.255.1),然后输入自己的程序的位置(比如:/usr/local/sbin/my_agent)。配置完成后保存配置文件,将其拷贝到/etc/snmp/snmpd.conf。可以看出,刚才的配置在其中生成一行:
    pass .1.3.6.1.4.1.96.255.1 /usr/local/sbin/my_agent
  3. Agent的要求
    并非随便的程序都可以做为SNMP Agent,这里要my_agent的运行结果生成三行:
    MIBOID
    TypeOfResult
    ValueOfResult
    IBOID自己定义一个,如.1.3.6.4.1.96.255.1;TypeOfResult,如int;ValueOfResult,如35,或者1或者0。监控机就可以通过这个值来判断被监控机器的情况。要说明的是,agent采用bash脚本,SNMP并不识别。会出错:“ No Such Instance currently exists at this OID”。根据本人测试,用Perl脚本与C语言的printf输出都可以。为什么bash脚本不行,目前还不清楚,猜想是bash的console问题。
  4. 启动snmp服务。可以用/etc/init.d/snmpd start。但是发现有时通过这个脚本启动后,客户端访问会出错。此时手工启动,即snmpd -c /etc/snmp/snmpd.conf。然后,客户端访问就会成功。所有过程都一样,就是启动方式不一样。不知道为什么?请高手赐教!
  5. 客户端访问
    客户端安装在监控机上,可以通过snmpget来查看,命令如下:
    snmpget -v2c -c public IP   OID
    比如:snmpget  -v2c -c public 192.168.50.11 .1.3.6.1.4.1.96.255.1
    结果显示:SNMPv2-SMI::enterprises.96.255.1 = INTEGER: 96
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值