动力通讯工作组

动力通信工作组致力于网络通信的开发工作,进行tcpip网络编程,采用unix平台socket系列函数, windows平台 vc++6.0 MFC ,采用ASyncSocket对象。目前有telnet,irc,msn, SocketProxy 等产品程序。

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  14 随笔 :: 14 文章 :: 111 评论 :: 0 Trackbacks


第3章、snmp工具、snml语言执行概述


  snmp( Simple Network Management Protocol )简单网络管理协议是可以管理不同厂家网络设备的简单通讯协议。

1、网络设备开启snmp功能

Cisco设备配置snmp
参考文档: https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/snmp/configuration/12-4t/snmp-12-4t-book/nm-snmp-cfg-snmp-support.html#GUID-048B997C-AB98-4602-B07B-3130577154F1 
举例 :
Router>enable
Router# configure terminal 
Router(config)# snmp-server community MyPassword RO

HUAWEI设备配置snmp
参考文档: https://support.huawei.com/enterprise/zh/doc/DOC1000088739?section=j005 
H3C设备配置snmp
参考文档: http://www.h3c.com/cn/d_201108/723419_30005_0.htm 
举例 :
<Sysname>system-view
[Sysname] snmp-agent
[Sysname] snmp-agent sys-info version v1 v2c
[Sysname] snmp-agent community read MyPassword

2、查看示例脚本[C:\snml2019\snmp\snmp_1.txt]

C:\snml2019\snmp\snmp_1.txt
001snmp.open version {2c} ip {192.168.186.132} port {161} password {cisco}
002snmp.get var {cisco7200} oid {1.3.6.1.2.1.1.1}
003screen.text at point {20} {20} string {snmp.get 返回值: ~cisco7200~}
004snmp.getnext oid {1.3.6.1.2.1.1.3}
005screen.text at point {20} {40} string {snmp.getnext 返回oid值:~snmp.oid~ 返回值:~snmp.value~}
006run.end

3、由解释器 [C:\snml2019\snml.exe] 逐行解析执行脚本

  批处理文件C:\snml2019\snmp.bat,双击执行,开始调用解释器程序。 

C:\snml2019\snml.exe nolog C:\snml2019\snmp\snmp_1.txt
  批处理文件中执行C:\snml2019\snml.exe,snml.exe是简单网络管理语言的解释器。后面两个命令行参数,第一个参数nolog参数的含义是不记录日志,第二个参数C:\snml2019\snmp\snmp_1.txt为网管脚本文件的文件名。
  点击“Go”或“连续执行按钮”执行脚本,脚本执行结果如下:

4、示例脚本[C:\snml2019\snmp\snmp_1.txt]语法解析


1)snmp.open version {2c} ip {192.168.186.132} port {161} password {MyPassword} 
snmp.open语句用来打开snmp管理协议,有4个参数,所有参数用左右大括弧{}括起来。
第一个参数{2c}为snmp协议的版本号,支持1、2、2c;
第二个参数{192.168.186.132}为网络设备的IP地址;
第三个参数{161}为网络设备snmp服务的端口号,默认值为UDP的161端口;
第四个参数{MyPassword}为网络设备snmp服务的密码

2)snmp.get var {cisco7200_SysName} oid {1.3.6.1.2.1.1.5.0} 
snmp.get语句向snmp.open指定的网络设备发送snmp.get请求报文,并接收应答。
第二个参数{1.3.6.1.2.1.1.5.0}为请求网络设备参数的oid值;
第一个参数{cisco7200_SysName}为变量名字,该变量用来保存网络设备返回值;
在本例子中网络设备返回oid {1.3.6.1.2.1.1.5.0} 对应的值“R2_7206.test.cisco”,
变量区生成或更新变量:cisco7200_SysName=[R2_7206.test.cisco];

3)screen.text at point {20} {20} string {snmp.get 返回值: ~cisco7200_SysName~} 
screen.text语句在解释器的屏幕上显示文本。
第一、二个参数{20}和 {20}为屏幕的坐标点(20,20),在该位置开始显示文本;
第三个参数{snmp.get 返回值: ~cisco7200_SysName~}为要显示的文本内容,用两个~线连接一个变量,
在本语句中,显示“snmp.get 返回值:”+ 变量cisco7200_SysName的值,变量cisco7200_SysName=[R2_7206.test.cisco],最后显示内容为:“snmp.get 返回值:R2_7206.test.cisco”

4)snmp.getnext oid {1.3.6.1.2.1.1.3} 
snmp.getnext语句向snmp.open指定的网络设备发送snmp.getnext请求报文,并接收应答。
第一个参数{1.3.6.1.2.1.1.3}为请求网络设备参数的oid值;
网络设备接收到snmp.getnext指令后,返回与指定oid紧邻的下一个oid值和及对应参数值,在本例中网络设备返回oid {1.3.6.1.2.1.1.3}的紧邻的下一个oid值为”1.3.6.1.2.1.1.3.0”,参数值为” 0 Days 1 Hours 1 Minutes 34 Seconds”;
由于本语句执行后产生的变量值有两个,语句用规定的两个变量名来保存网络设备返回的两个值,变量名和值如下:
snmp.oid=[1.3.6.1.2.1.1.3.0]
snmp.value=[0 Days 1 Hours 1 Minutes 34 Seconds]

5)screen.text at point {20} {100} string {snmp.getnext 返回oid值:~snmp.oid~ 返回值:~snmp.value~} 
screen.text语句在解释器的屏幕上显示文本。
第一、二个参数{20}和 {100}为屏幕的坐标点(20,100),在该位置开始显示文本;
第三个参数{snmp.getnext 返回oid值:~snmp.oid~ 返回值:~snmp.value~}为要显示的文本内容,用两个~线连接一个变量,在本语句中,显示“snmp.getnext 返回oid值:”+ 变量snmp.oid的值+“返回值:”+变量snmp.value 的值,最后显示内容为:“snmp.getnext 返回oid值:1.3.6.1.2.1.1.3.0返回值:0 Days 1 Hours 1 Minutes 34 Seconds”
6)run.end
run.end语句表示脚本执行结束。

目录: 1、var 2、screen 3、snmp 4、telnet 5、text 6、if 7、loop 8、dns 9、ping 10、arp 11、excel 12、smtp 13、tcp 14、udp 15、ssh 16、web 17、mysql 18、sqlite 19、Run 20、sys 21、macro 附录1、全部语句
posted on 2019-07-16 09:35 动力通讯工作组 阅读(172) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。