snmp操作简介
主要介绍了以下操作:
- snmp服务的安装
- snmp相关的一些简单操作
Windows下可以开启snmp服务的代理端,不过如果要进行网络管理需要安装专用的nms软件,如果是简单的操作则需要安装net-snmp或者snmputil来实现.
Linux下主要使用到的软件是snmp snmpd snmp-mibs-downloader
系统信息及操作
系统信息:Linux 4.15.0-70-generic #79~16.04.1-Ubuntu SMP x86_64
本地测试
- 安装snmp
1 | sudo apt-get install snmp snmpd |
- 查看安装版本
1 | user@flyinfort:~$ snmpd -v |
- 启动和查看snmpd服务
1 | user@flyinfort:~$ sudo service snmpd start |
- walk命令查看MIB信息库
1 | user@flyinfort:~$ snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1 |
在这个命令中localhost之后的一串数字就是我们之前学到的OID,这一个OID:1.3.6.1.2.1.1.1是MIB中对象标识符,在这个对象里面会存储一些跟系统主机相关的一些信息。
在网上会有相关的OID的具体含义的网页,例如: http://www.ttlsa.com/monitor/snmp-oid/
可以对应查找
- 安装启动trapd监听trap信息
1 | sudo apt-get install snmptrapd |
上面命令中的选项表示:
-C : 表示不使用net-snmp默认路径下的配置文件snmptrapd.conf;
-c : 指定snmptrapd.conf文件;
-d : 显示收到和发送的数据报,通过这个选项可以看到数据报文;
-f : 默认情况下,snmptrapd是在后台中运行的,加上这个选项,表示在前台运行;
-L : 指定日志记录在哪里,后面的o表示直接输出到屏幕上,如果是跟着f表示日志记录到指定的文件中;
可通过snmptrapd -h查看命令帮助了解该命令的使用。
6. 本机发送trap信息
1 | sudo snmptrap -v1 -c public localhost 1.3.6.1.4.1.1 10.10.12.219 2 3 1000 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s test_snmptrap |
下面是snmpdtrapd接受到的我们发送的trap
1 | Received 82 byte packet from UDP: [127.0.0.1]:48964->[127.0.0.1]:162 |
网络测试
由于我们之前是在自己本机进行的一些操作,所以现在进行网络测试,网络测试需要对snmpd的配置进行一些修改。
- 配置节点
修改配置文件
1 | sudo vim /etc/snmp/snmpd.conf |
注意在修改配置文件的时候需要管理员权限。
1 | view systemonly included .1.3.6.1.2.1.1 |
将上面两句注释掉,注释完了之后,在下面添加新的一句
1 | view systemonly included .1 |
这样子就可以获取更多节点的信息了,我们修改的是对应的OID如果是之前的那两句的意思是只获取那两个的对应的实体的信息。
1 | user@flyinfort:/etc/snmp$ service snmpd restart |
这是查看了一下内存的使用
2. 允许远程主机访问
1 | # Listen for connections from the local system only |
snmpd默认的设置是只对本地主机开放的,远程无法获取我们本地的snmp的信息修改config文件使其可以远程访问
将上面的agentAddress udp:127.0.0.1:161
注释掉,将agentAddress udp:161,udp6:[::1]:161
取消注释即可,然后重新启动snmpd服务
此时最好再次查看确保snmpd服务已经启动。
3. 在windows上开启snmp服务远程获取Linux主机信息
在Windows上开启snmp服务的一般的功能上,控制面板->程序和功能->启用和关闭windows功能->选择snmp服务。可以打开服务面板重启snmp服务。
想要查看我们远程linux主机的MIB信息需要用到其他工具,在这里使用的snmputil(net-snmp在win上安装麻烦些,暂时还没安装成功),支持get walk等命令。在此处查看远程主机的系统信息。可以看到和我们在本地看到的信息是一致的。
1 | D:\workspace\softwares\snmputil>SNMPUTIL.EXE walk 10.164.222.198 public .1.3.6.1.2.1.1.1 |
环境搭建简介
环境:Linux flyinfort 4.15.0-96-generic #97~16.04.1-Ubuntu SMP Wed Apr 1 03:03:31 UTC 2020 x86_64
在这里使用easysnmp简单演示一下。
easysnmp使用手册:https://easysnmp.readthedocs.io/en/latest/
如果没有net-snmp的话,easysnmp是基于net-snmp的,首先要安装net-snmp。
安装了net-snmp的话直接安装就可以了:
1 | sudo apt-get install libsnmp-dev snmp-mibs-downloader |
net-snmp下载地址:http://www.net-snmp.org/
按照net-snmp的安装指南安装net-snmp:
- Run ./configure
- Optionally edit include/net-snmp/net-snmp-config.h
- make
- Run the next command as root:
- make install
- configure the agent
根据easysnmp的使用手册安装easysnmp:
1 | sudo apt-get install gcc python-dev |
easysnmp安装完了之后就可以使用easysnmp来进行一些操作了。
1 | from easysnmp import snmp_walk |
1 | [<SNMPVariable value='Linux flyinfort 4.15.0-96-generic #97~16.04.1-Ubuntu SMP Wed Apr 1 03:03:31 UTC 2020 x86_64' (oid='iso.3.6.1.2.1.1.1.0', oid_index='', snmp_type='OCTETSTR')>] |
关于更多easysnmp的操作可以在https://easysnmp.readthedocs.io/en/latest/
,easysnmp的使用手册上查阅。