2020-02-17第3章、snmp工具、snml语言执行概述

简单网络管理语言(Simple Network Management Language)是一种类自然语言的脚本语言,它采用snmp、telnet、ping、dns、arp、ssh、tcp、udp、web等协议访问网络设备,内置smtp协议用于告警等邮件的发送,支持excel、mysql、sqlite等3种方式进行网管数据的存取。

手册最新版:https://ladybirdsnml.github.io/snmlipv6utf8snmptelnetsshweb/snmldoc_utf8ipv6.html


                              第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:\snmlipv6\snmp\snmp_ipv4.txt]

C:\snmlipv6\snmp\snmp_ipv4.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.5.0}

003screen.text at point {5} {20} string {snmp.get (oid:1.3.6.1.2.1.1.5.0) return value: [~cisco7200~]}

004snmp.getnext oid {1.3.6.1.2.1.1.3}

005screen.text at point {5} {40} string {snmp.getnext (oid:1.3.6.1.2.1.1.5.0) }

006screen.text at point {55} {60} string {return oid: [~snmp.oid~] return value: [~snmp.value~]}

007run.end

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

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

C:\snmlipv6\snml.exe nolog C:\snmlipv6\snmp\snmp_ipv4.txt

  批处理文件中执行C:\snmlipv6\snml.exe,snml.exe是简单网络管理语言的解释器。后面两个命令行参数,第一个参数nolog参数的含义是不记录日志,第二个参数C:\snmlipv6\snmp\snmp_ipv4.txt为网管脚本文件的文件名。

  点击“Go”或“run”执行脚本,脚本执行结果如下:

4、示例脚本[C:\snmlipv6\snmp\snmp_ipv4.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语句表示脚本执行结束。

5、查看示例脚本[C:\snmlipv6\snmp\snmp_ipv6.txt]

C:\snmlipv6\snmp\snmp_ipv6.txt

001screen.set color red {0} green {0} blue {0}

002screen.text at point {150} {30} string {10.snmp test (ipv6): snmp.open snmp.get snmp.getnext}

003run.set loglevel {debug}

004snmp.open version {2c} ip {fe80::2} port {161} password {cisco}

005snmp.get var {v_snmp} oid {1.3.6.1.2.1.1.1.0}

006screen.text at point {10} {60} string {Cisco3725 ipv6:[fe80::2], snmp.get(1.3.6.1.2.1.1.1.0)=[~v_snmp~]}

007

008var {v_y} value {140}

009screen.text at point {10} {~v_y~} string {No.}

010screen.text at point {50} {~v_y~} string {Test Method}

011screen.line from point {10} {155} to point {230} {155}

012screen.text at point {270} {~v_y~} string {snmp.oid}

013screen.line from point {250} {155} to point {350} {155}

014screen.text at point {390} {~v_y~} string {snmp.value}

015screen.line from point {370} {155} to point {630} {155}

016

017var {v_time} value datetime

018var {v_i} value {0}

019

020

021var {snmp.oid} value {1.3.6.1.2.1.1.1.0}

022loop.begin

023  

024  var {v_i} add number {1}

025  var {v_y} add number {18}

026  screen.text at point {10} {~v_y~} string {~v_i~}

027  

028  screen.text at point {50} {~v_y~} string {snmp.getnext(~snmp.oid~)}

029  snmp.getnext oid {~snmp.oid~}

030  screen.text at point {250} {~v_y~} string {~snmp.oid~}

031  screen.text at point {370} {~v_y~} string {~snmp.value~}

032  

033  var {v_y} add number {18}

034  snmp.get var {v_snmp} oid {~snmp.oid~}

035  screen.text at point {50} {~v_y~} string {snmp.get(~snmp.oid~)}

036  

037  screen.text at point {370} {~v_y~} string {~v_snmp~}

038  

039  if.var {v_y} > {400}

040    loop.exit

041  if.end

042loop.end

043run.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、全部语句

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容