? ? ? ?簡單網(wǎng)絡(luò)管理語言(snml)支持CLI(命令行接口)和SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)兩種方式自動化的進行網(wǎng)絡(luò)設(shè)備配置和管理屠阻。CLI 是基于telnet狠毯、ssh的人機交互界面,用于設(shè)備的參數(shù)配置和狀態(tài)的查看靴拱。SNMP 是基于通訊協(xié)議的管理工具,實現(xiàn)網(wǎng)絡(luò)設(shè)備參數(shù)的自動化監(jiān)控和遠程配置复亏。
手冊最新版:https://ladybirdsnml.github.io/snmlipv6utf8snmptelnetsshweb/snmldoc_utf8ipv6.htm
第4章、telnet
??telnet協(xié)議是遠程登錄服務(wù)的標準協(xié)議和主要方式缭嫡。它為用戶提供了在本地計算機上登錄遠程主機缔御、網(wǎng)絡(luò)設(shè)備開展工作的能力。
1妇蛀、示例腳本[C:\snmlipv6\telnet\telnet_ipv4.txt]耕突,查看文本區(qū)內(nèi)容
C:\snmlipv6\telnet\telnet_ipv4.txt
001var {v_time} value datetime
002screen.text at point {10} {30} string {2. telnet ipv4 (192.168.186.132:23) test , datetime: ~v_time~}
003
004telnet.connect ip {192.168.186.132} port {23}
005telnet.recv expect {Username:}
006telnet.send {cisco%0a}
007telnet.recv expect {Password}
008
009telnet.send {cisco%0a}
010telnet.recv expect {>}
011telnet.send {enable%0a}
012telnet.set onrecv {More} send { }
013telnet.set delay {200} ms after per byte send
014telnet.send {show version%0a}
015telnet.recv for {5} seconds
016
017telnet.send {show run%0a}
018telnet.recv for {5} seconds
019telnet.send {exit%0a}
020telnet.close
021
022var {v_time} value datetime
023screen.text at point {10} {60} string {telnet tested end. datetime:~v_time~}
024
025run.end
??點擊右下角的“文本區(qū)”單選按鈕,顯示腳本執(zhí)行時的文本區(qū)的內(nèi)容评架,如上圖所示為telnet登錄網(wǎng)絡(luò)設(shè)備時顯示的屏幕內(nèi)容眷茁,將在下一章介紹文本區(qū)。
2纵诞、示例腳本分析
var {v_time} value datetime
screen.text at point {10} {30} string {2上祈、telnet測試開始,當前時間:~v_time~}
telnet.connect ip {192.168.186.132} port {23}
登錄遠程設(shè)備,設(shè)備的IP地址為:192.168.186.132登刺,服務(wù)端口號為:23
telnet.recv expect {Username:}
接收服務(wù)器發(fā)送的文本籽腕,一直接收到指定字符串“Username:”
telnet.send {cisco%0a}
發(fā)送用戶名字符串“cisco”和換行鍵。
??要點1:snml參數(shù)中特殊字符的表示方法
例如不可見字符纸俭、回車皇耗、換行、tab等揍很,采用%+兩位16進制ASCII碼的方式表示郎楼,例如本例中%0a代表換行。
由于%用于轉(zhuǎn)義標識字符窒悔,當需要%字符時呜袁,應(yīng)用%25標識,同樣{用%7b標識简珠,}用%7d標識傅寡。ASCII碼表如下:
telnet.recv expect {Password}
接收服務(wù)器發(fā)送的文本,一直接收到指定字符串“Password”
telnet.send {cisco%0a}
發(fā)送密碼字符串“cisco”和換行鍵北救。
telnet.recv expect {>}
接收服務(wù)器發(fā)送的文本荐操,一直接收到指定字符串“>”
telnet.send {enable%0a}
發(fā)送字符串“enable”和換行鍵。
telnet.set onrecv {More} send { }
設(shè)置telnet自動輸入選項珍策,當接收到“More”時托启,自動發(fā)送一個空格
telnet.set delay {200} ms after per byte send
設(shè)置telnet輸入選項,每發(fā)送一個字節(jié)后攘宙,暫停200毫秒屯耸,再發(fā)送下一個字符。模擬人工鍵盤輸入蹭劈,防止設(shè)備壓力過大疗绣。
telnet.send {show version%0a}
發(fā)送字符串“show version”命令和換行鍵。
telnet.recv for {5} seconds
接收5秒鐘內(nèi)服務(wù)器發(fā)送的文本铺韧,當服務(wù)器發(fā)送的文本中含有“More”時多矮,自動發(fā)送一個空格
telnet.send text
發(fā)送選中的文本區(qū)域
telnet.close
關(guān)閉telnet連接。
var {v_time} value datetime
screen.text at point {10} {60} string {telnet測試完成哈打,當前時間:~v_time~}
run.end
3塔逃、腳本執(zhí)行后查看變量區(qū)內(nèi)容
??點擊右下角的“變量區(qū)”單選按鈕,顯示腳本執(zhí)行時的全部變量的值料仗,注意telnet.status湾盗、telnet.onrecv、telnet.autosend 3個變量的值立轧,參見下圖:
4格粪、示例腳本[C:\snmlipv6\telnet\telnet_ipv6.txt]躏吊,查看文本區(qū)內(nèi)容
C:\snmlipv6\telnet\telnet_ipv6.txt
001var {v_time} value datetime
002screen.text at point {10} {30} string {2. telnet ipv6 ([FE80::1]:23) test , datetime: ~v_time~}
003
004telnet.connect ip {FE80::1} port {23}
005telnet.recv expect {Username:}
006telnet.send {cisco%0a}
007telnet.recv expect {Password}
008
009telnet.send {cisco%0a}
010telnet.recv expect {>}
011telnet.send {enable%0a}
012telnet.set onrecv {More} send { }
013telnet.set delay {200} ms after per byte send
014telnet.send {show version%0a}
015telnet.recv for {5} seconds
016
017telnet.send {show run%0a}
018telnet.recv for {5} seconds
019telnet.send {exit%0a}
020telnet.close
021
022var {v_time} value datetime
023screen.text at point {10} {60} string {telnet tested end. datetime:~v_time~}
024
025run.end
腳本執(zhí)行結(jié)果如下:
目錄:?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材彪、全部語句