SNMP是常用的基于UDP的网管协议,企业网中通常使用SNMP协议读取设备的接口状态、流量信息和CPU、内存、IO等硬件状态。
SNMP报文
- SNMP Request
![bb6594a047f0d7d5f7a89a36886f9ce8.png](https://i-blog.csdnimg.cn/blog_migrate/3cf3c7c86ee356962d86154594e24c19.jpeg)
request
- SNMP response
![ba4d5779736eaf15314d6fd3d0b07cac.png](https://i-blog.csdnimg.cn/blog_migrate/917fe4af61779143f69363eeecbb29a2.jpeg)
response
version
显示SNMP协议使用的版本,默认使用v2c;
community
显示SNMP使用的community string,需要与SNMP server的配置相同;
request-id
用于关联SNMP同一组请求、响应的报文;
error-status
显示SNMP协议的错误信息;
Object Name
请求与响应的OID;
Value
OID对应的键值。
语法
snmpwalk [APPLICATION OPTIONS] [COMMON OPTIONS] AGENT [OID]
示例
LeoMBPR:~ leoxu$ snmpwalk -Os -c public 192.168.10.10sysDescr.0 = STRING: Linux 10nas.xuhome.com 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64sysObjectID.0 = OID: netSnmpAgentOIDs.10sysUpTimeInstance = Timeticks: (38814539) 4 days, 11:49:05.39sysContact.0 = STRING: Root (configure /etc/snmp/snmp.local.conf)sysName.0 = STRING: 10nas.xuhome.comsysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)sysORLastChange.0 = Timeticks: (19) 0:00:00.19
[options]
snmpwalk支持通用的snmpcmd参数,常用的snmpcmd参数如下:
-c
指定snmp v1、v2c所使用的community string;
-v
指定使用的snmp版本,支持1、2c、3;
-r
指定snmp请求重试的次数,默认为5;
-t
指定每次重试的时间间隔,默认为1秒;
总结
SNMP协议是网络管理的基础协议,snmpwalk配合脚本使用不同的community string可以扫描网络内的设备及主机,从而获取更多的资产信息。