centos7 net-snmp agentx

centos7 net-snmp agentx

参考

Net-snmp总结(四)-net-snmp的MIBs扩展_添加set
https://blog.csdn.net/JIANGXIN04211/article/details/78477890

https://github.com/hosthvo/pyagentx
https://github.com/pief/python-netsnmpagent

https://stackoverflow.com/questions/45996003/oids-from-net-snmp-agentx-not-showing-in-smpwalk-unless-specified-explicitly

http://www.net-snmp.org/docs/man/snmpwalk.html

/usr/share/snmp/mibs
/usr/share/snmp/mibs

https://sourceforge.net/projects/net-snmp/files/net-snmp/

http://www.net-snmp.org/wiki/index.php/Writing_your_own_MIBs

因为这个工具其实叫“AgenPro”而不是“AgentPro”.

配置文件:

sudo vi /etc/snmp/snmpd.conf

com2sec notConfigUser  default       public
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
view   systemview  included   .1.3.6.1.4.1.8072.2
view   systemview  included   .1.3.6.1.4.1.16533
view   systemview  included   .1.3.6.1.4.1.77587
access  notConfigGroup ""      any       noauth    exact  systemview none none
master          agentx
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes

子代理程序

/home/mike/snmp_test/pyagentx-master/77587_example-agent.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import pyagentx

class NetSnmpTestMibScalar(pyagentx.Updater):

    def update(self):
        #self.set_INTEGER('1.0', 1000)
        self.set_OCTETSTRING('1.0', 'ShangDong666Welcome')
        #self.set_OBJECTIDENTIFIER('4.0', '1.2')
        #self.set_IPADDRESS('5.0', '127.0.0.1')
        #self.set_COUNTER32('6.0', 2000)
        #self.set_GAUGE32('7.0', 2000)
        #self.set_TIMETICKS('8.0', 1000000)
        #self.set_OPAQUE('9.0', 'Test')
        #self.set_COUNTER64('10.0', 2000)
        #self.set_INTEGER('9.0',666)





class MyAgent(pyagentx.Agent):

    def setup(self):
        self.register('1.3.6.1.4.1.77587', NetSnmpTestMibScalar)


def main():
    pyagentx.setup_logging()
    try:
        a = MyAgent()
        a.start()
    except Exception as e:
        print "Unhandled exception:", e
        a.stop()
    except KeyboardInterrupt:
        a.stop()
if __name__=="__main__":
    main()

        

mibs配置文件

cd /usr/share/snmp/mibs/
sudo vi TEST-SET-MIB.txt

--开始
TEST-SET-MIB DEFINITIONS ::= BEGIN

--引入部分
IMPORTS
    enterprises
        FROM RFC1155-SMI
    Integer32,OBJECT-TYPE
        FROM SNMPv2-SMI
    DisplayString
        FROM SNMPv2-TC
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC; --引用结束,用分号


--定义节点
--enterprises的OID是1.3.6.1.4
testSet OBJECT IDENTIFIER ::= {enterprises 77587}

writeObject OBJECT IDENTIFIER ::= {testSet 1}

writeObject OBJECT-TYPE   --对象名称
SYNTAX      DisplayString --类型
MAX-ACCESS  read-write    --访问方式
STATUS      current       --状态
DESCRIPTION "test write"  --描述
::= {testSet 1}           --父节点

--结束定义
END

测试方法:

snmpget -c public -v 2c localhost 1.3.6.1.4.1.77587.1.0
snmptranslate -Tp -IR TEST-SET-MIB::testSet
在这里插入图片描述
在这里插入图片描述

mib browser

在这里插入图片描述
在这里插入图片描述

停止防火墙

• 停止firewall
systemctl stop firewalld.service
• 禁止firewall开机启动
systemctl disable firewalld.service
systemctl status firewalld

安装 net-snmp

sudo yum install net-snmp net-snmp-utils
rpm -ql net-snmp

重启snmpd服务

sudo systemctl restart snmpd.service
sudo systemctl enable snmpd.service
sudo systemctl start snmpd.service
sudo systemctl status snmpd.service

常用命令

6 端口查看 sudo lsof -i:161
By default, NET-SNMP snmpwalk walks 1.3.6.1.2.1, according to it's man page

snmptranslate -To
snmptranslate -Tz | grep 8072
snmpwalk -v 2c -c public localhost 1.3.6.1.4.1.8072.2.3

snmpwalk -O n -v 2c -c public localhost
snmpwalk -v 2c -c public 127.0.0.1
snmpwalk -v 2c -c public 192.168.99.31

snmpwalk -v 2c -c public 127.0.0.1
-v 2c 指定版本信息
-c 指定团体名 public为默认团体名

2)snmpget获取指定OID的信息
snmpget -v 2c -c public 127.0.0.1 HOST-RESOURCES-MIB::hrSystemUptime.0

snmpget -v 2c -c public 127.0.0.1 HOST-RESOURCES-MIB::hrSystemUptime.0

snmpwalk -v 2c -c public 192.168.99.31
snmpwalk -c public 192.168.99.31
snmpwalk -v 1 -c public 192.168.99.31
snmpwalk -v 2c -c public 192.168.99.31 SNMPv2-MIB::sysContact.0
snmpget -v 2c -c public 192.168.99.31 SNMPv2-MIB::sysContact.0
ifconfig
history
snmpwalk -O n -v 2c -c public localhost
snmpwalk -v 2c -c public localhost 1.3.6.1.4.1.8072.2.3
snmpget -c public -v 2c 192.168.99.31 1.3.6.1.4.1.77587.1.0

虚拟机

VMware设置虚拟机与物理主机处于同一网段,桥接模式,
NAT模式是把虚拟机的网络和 物理主机 不处于一个网段
在这里插入图片描述

book 和 pdf

SNMP协议详解.pdf

SNMP的功能及使用.pdf
SNMP协议简介参照.pdf
深入理解Net-SNMP .pdf

在这里插入图片描述

在这里插入图片描述
snmpwalk -O n -v 2c -c public localhost 1.3.6.1.4.1.8072

class MyAgent(pyagentx.Agent):

    def setup(self):
        self.register('1.3.6.1.4.1.8072.2.1', NetSnmpTestMibScalar)
class NetSnmpTestMibScalar(pyagentx.Updater):

    def update(self):
        self.set_INTEGER('1.0', 1000)
        self.set_OCTETSTRING('3.0', 'String for NET-SNMP-EXAMPLES-MIB')
        self.set_OBJECTIDENTIFIER('4.0', '1.2')

在这里插入图片描述
“netSnmpExampleInteger” “1.3.6.1.4.1.8072.2.1.1”
“netSnmpExampleString” “1.3.6.1.4.1.8072.2.1.3”
“netSnmpExampleScalars” “1.3.6.1.4.1.8072.2.1”
“netSnmpIETFWGTable” “1.3.6.1.4.1.8072.2.2.1”

命令执行1

snmptable -v 2c -c public -Ci localhost NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
在这里插入图片描述
snmpwalk -v 2c -c public localhost NET-SNMP-EXAMPLES-MIB::netSnmpExampleScalars
在这里插入图片描述

[mike@localhost ~]$ sudo snmpset -v 2c -c public localhost 1.3.6.1.4.1.8072.2.1.1.0 i 10
Error in packet.
Reason: noAccess
Failed object: NET-SNMP-EXAMPLES-MIB::netSnmpExampleInteger.0

snmpset -c public -v 2c localhost 1.3.6.1.4.1.77587.1.0 s "hello world"
snmpset -v 2c -c public localhost NET-SNMP-EXAMPLES-MIB::netSnmpExampleString.0 s "Test"

1.还是从MIB开始。
由于只是一个简单的起停命令,前面定义的recordStatusTable中的Status字段完全满足要求,我们只需要给它设置一个不同的值就可以了。
之前在文件"/usr/local/share/snmp/mibs/FIGURE-IT-MIB.txt"中给它定义的访问属性是:“read-only”,将它改成“read-write”就OK了。

./NET-SNMP-AGENT-MIB.txt

例子程序

Minimal Agent

snmptranslate -Tz |grep 9999
“netSnmpExperimental” “1.3.6.1.4.1.8072.9999”
“netSnmpPlaypen” “1.3.6.1.4.1.8072.9999.9999”

cd /usr/share/snmp/mibs/
grep -r “9999”

NET-SNMP-MIB.txt:netSnmpExperimental OBJECT IDENTIFIER ::= {netSnmp 9999}
NET-SNMP-MIB.txt:netSnmpPlaypen OBJECT IDENTIFIER ::= {netSnmpExperimental 9999}

    class NetSnmpPlaypen(pyagentx.Updater):
        def update(self):
            self.set_INTEGER('1.0', 1000)
            self.set_OCTETSTRING('3.0', 'String for NET-SNMP-EXAMPLES-MIB')

    class MyAgent(pyagentx.Agent):
        def setup(self):
            # Register Updater class that responsd to
            # the tree under "netSnmpPlaypen": 1.3.6.1.4.1.8072.9999.9999
            self.register('1.3.6.1.4.1.8072.9999.9999', NetSnmpPlaypen)
Example Agent

netSnmpExampleScalars OBJECT IDENTIFIER ::= { netSnmpExamples 1 }

“netSnmpExampleScalars” “1.3.6.1.4.1.8072.2.1”
“netSnmpExampleTables” “1.3.6.1.4.1.8072.2.2”

class NetSnmpTestMibScalar(pyagentx.Updater):

def update(self):
    self.set_INTEGER('1.0', 1000)
    self.set_OCTETSTRING('3.0', 'String for NET-SNMP-EXAMPLES-MIB')
    self.set_OBJECTIDENTIFIER('4.0', '1.2')
    self.set_IPADDRESS('5.0', '127.0.0.1')
    self.set_COUNTER32('6.0', 2000)
    self.set_GAUGE32('7.0', 2000)
    self.set_TIMETICKS('8.0', 1000000)
    self.set_OPAQUE('9.0', 'Test')
    self.set_COUNTER64('10.0', 2000)

self.register(‘1.3.6.1.4.1.8072.2.1’, NetSnmpTestMibScalar)
self.register_set(‘1.3.6.1.4.1.8072.2.1.1.0’, NetSnmpIntegerSet)

    def setup(self):
        self.register('1.3.6.1.4.1.8072.2.1', NetSnmpTestMibScalar)

11

netSnmpExampleInteger OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
	"This is a simple object which merely houses a writable
	 integer.  It's only purposes is to hold the value of a single
	 integer.  Writing to it will simply change the value for
	 subsequent GET/GETNEXT/GETBULK retrievals.

	 This example object is implemented in the
	 agent/mibgroup/examples/scalar_int.c file."
    DEFVAL { 42 }
    ::= { netSnmpExampleScalars 1 }

snmptranslate

您也可以尝试使用该snmptranslate实用程序,该实用程序比查看MIB文件更容易!

$ snmptranslate -On NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
.1.3.6.1.4.1.8072.2.2.1
$ snmptranslate -Of NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
.iso.org.dod.internet.private.enterprises.netSnmp.netSnmpExamples.netSnmpExampleTables.netSnmpIETFWGTable
$ snmptranslate 1.3.6.1.4.1.8072.2.2.1
NET-SNMP-EXAMPLES-MIB::netSnmpIETFWGTable
$ snmptranslate -Of 1.3.6.1.4.1.8072.2.2.1
.iso.org.dod.internet.private.enterprises.netSnmp.netSnmpExamples.netSnmpExampleTables.netSnmpIETFWGTable
RW

snmptranslate -IR -Tp netSnmpExampleInteger.0
±- -RW- Integer32 netSnmpExampleInteger(1)
在这里插入图片描述

4.使用snmptranslate -IR -Tp hikvision

检查是否能正确生成MIB树。

2022-04-13 18:25:30,387 - pyagentx.network - INFO - Received GET PDU
2022-04-13 18:25:30,388 - pyagentx.network - DEBUG - OID: 1.3.6.1.4.1.77587.1765
2022-04-13 18:25:30,388 - pyagentx.network - DEBUG - OID Found
2022-04-13 18:25:30,389 - pyagentx.pdu - DEBUG - PDU DUMP: New PDU
2022-04-13 18:25:30,389 - pyagentx.pdu - DEBUG - PDU DUMP: Meta : [RESPONSE_PDU: 15 1680 1681]
2022-04-13 18:25:30,390 - pyagentx.pdu - DEBUG - PDU DUMP: Values : [{‘name’: u’1.3.6.1.4.1.77587.1765’,
‘type’: 4,
‘value’: u’{“field_name”: “current_roll”, “value”: “+14.33”, “timestamp”: 1649845522.1424496}'}]

2022-04-13 18:22:02,308 - pyagentx.network - INFO - Received GET PDU
2022-04-13 18:22:02,308 - pyagentx.network - DEBUG - OID: 1.3.6.1.4.1.77587.1827
2022-04-13 18:22:02,308 - pyagentx.network - DEBUG - OID Found
2022-04-13 18:22:02,309 - pyagentx.pdu - DEBUG - PDU DUMP: New PDU
2022-04-13 18:22:02,309 - pyagentx.pdu - DEBUG - PDU DUMP: Meta : [RESPONSE_PDU: 11 1678 1679]
2022-04-13 18:22:02,310 - pyagentx.pdu - DEBUG - PDU DUMP: Values : [{‘name’: u’1.3.6.1.4.1.77587.1827’,
‘type’: 4,
‘value’: u’{“field_name”: “sat_info20”, “value”: “100.50\u5ea6, 12749.750MHz, \u5782\u76f4\u6781\u5316”, “timestamp”: 1649845309.45102}'}]
2022-04-13 18:22:03,299 - pyagentx.network - ERROR - Empty PDU, connection closed!
2022-04-13 18:22:03,300 - pyagentx.network - ERROR - Network error, master disconnect?!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值