版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SecureCRT却本编写方法一、SecureCRU具常用到的几个函数阐述如下:在SecureCRTM,用得最多的应该就是crt.Screen,基本上很多操作都是基于屏幕的返回字来决定下一步该作何操作:第一:crt.Screen.WaitForString("KeyString",timewaiting)该函数是单字符串判断,KeyString是需要查找的关键字,timewaiting是一个超时阀值,例如:crt.Screen.Wa让ForString("people:",5)亥行代码的意思就是在5秒内没有检测到people:出现,就执行下一条语句,如果改成:crt.Screen.WaitForString("people:")!B就是指直至Upeople:出现才执行下一行代码WaitForString是有返回值的,返回值是True或者False因此,可以根据返回值进行条件判断以确定一下条代码例如:If(crt.Screen.WaitForString("currentstate:UP",1)<>False)ThenportStatus="PortUP"ElseportStatus="PortDown"EndIfmsgboxportStatus这段代码用于判断端口状态情况并记录下来.第二:crt.Screen.WaitForStrings(”KeyString1",“KeyString2”,…,timeout)用于多个字符串的判断,timeout的作用是一样的例如:crt.Screen.WaitForStrings("cisco","huawei","H3C",5)意思就是在5秒内有检测到相应的字符时,返回相应的索引号(索引号是从1开始的)如果都没有检查到,则返回0.因此,该函数的使用可以如下:DimSwitchKeySwitchKey=crt.Screen.WaitForStrings("cisco","huawei","H3C",5)SelectcaseSwitchKeycase1MsgBox"思科设备"case2MsgBox'华为设备"case3MsgBox'华三设备"caseelseMsgBox"未知设备"EndSelect几个对话性的函数其实SecureCRTi持的脚本语言就是VBS这个脚本语言与VB有较大的不同,对于界面的支持性较差不过也有几个对话性的函数1、InputBox提示用户输入参数temp=inputbox("提示用户你输入参数的名称",”对话框的名称"):需要将输入的参数赋值给某一个参数进行使用2、输出函数msgboxmsgbox”给用户输出的信息对话框”eg求正方形面积的脚本dimr,sr=inputbox("请输入正方形的边长:","求正方形面积的程序")s=r*rmsgbox(s)巡检代码示例下面就我的工作性质,跟我同事一块制作的一个脚本程序一一维护着N台路由器设备,每天需要对这些设备进行例行巡检下面是程序的所有代码,希望对各位有所帮助********************************************************************************************************************************************************************************************************************#$language="VBScript"#$interface="1.0"'说明:'本代码可在CRT工具中实现Cosico,华为,爱立信路由器交换机数据的自动配置或作为设备巡检之用;Setscreen-crt.ScreenM建屏幕对象’定义全局变量:'Device变量为操作设备对象数组,作为存储设备名用;'CiscoAggreOfCommand变量为思科设备命令集合数组,作为存储思科设备命令用;'NE40EAggreOfCommand变量为华为NE40E设备命令集数组,作为存储华为NE设备命令用;'SE800AggreOfCommand变量为爱立信SE80似备命令集数组,彳为存储爱立信SE800设备命令用;'ArrreOfRiskCommands变量为各厂家设备存在风险性操作命令的数组,作为存储过滤风险操作命令之'DeviceNumth变量为Device数组序号;'CommandNumth变量为各厂家命令数组的序号;'ResultOfTyp侬量为判断设备类型标识符;'TypeOfCommand变量作为存储当前命令类型用;DimDevice,CiscoAggreOfCommands,NE40EAggreOfCommands,SE800AggreOfCommands,ArrreOfRiskCommandsDimDeviceNumth,CommandNumth,ResultOfTypeDimTypeOfCommand‘爱立信设备集合'Device=Array("CE35-ERICSE800","CE36-ERICSE800","CE37-ERICSE800","CE38-ERICSE800")'华为设备集合Device=Array("CE07-HWNE40E","CE08-HWNE40E",_"CE09-HWNE40E","CE10-HWNE40E",_"CE11-HWNE40E","CE12-HWNE40E",_"CE21-HWNE40E","CE22-HWNE40E",_"CE23-HWNE40E","CE24-HWNE40E",_"CE25-HWNE40E","CE26-HWNE40E",_"CE29-HWNE40E","CE30-HWNE40E",_"CE33-HWNE40E","CE34-HWNE40E",_"CE45-HWNE40E","CE46-HWNE40E",_"CE47-HWNE40E","CE48-HWNE40E",_"CE49-HWNE40E","CE50-HWNE40E")'思科设备命令集合CiscoAggreOfCommands=Array("showcdp",_“showconf",_"showhard",_"showinterface",_"showiproute",_“showconf")'华为NE40E设备命令集合'健康检查'告警检查,日志检查'单板运行状态检查,CPU占用率检查,内存占用率检查,接口和链路状态以及流量检查'NE40E接口状态检查'OSPF邻居状态检查,路由信息检查NE40EAggreOfCommands=Array("displayhealth”,_“displaytrapbuffer“,_"displaylogbufferH,_“displaydevice“,_“displaycpu-usage“,_“displaymemory-usage“,_“displayinterface“,_“disospfpeer“,_“displayiprouting-table"),爱立信SE800设备命令集合,单板注册信息,办卡加电自检,单板运行状态检查,检查背板运行状态,检查主控板冗余性,存储设备利用率,CPU利用率,内存利用率检查,端口运行状态检查,端口数据收发状态检查,电源使用情况检查'检查OSPFF犬态SE800AggreOfCommands=Array("showchassis",_"showdiagon-demanddetail",_"showhardware",_"showbackplane-status",_"showredundancy",_"showdisk",_"showprocess",_"showmemory",_"showportdetail",_"showportcountersdetail",_"showchassispower",_"contextChinaMobile_NGN_SG",_"showospfneighbor",_"contextChinaMobile_NGN_Media",_"showospfneighbor")'风险命令过滤集合ArreOfRiskCommands=Array("reb","rel")'CE汇聚网管平台登陆子函数FunctionLandIPNETscreen.Send""&chr(13)screen.WaitForString"ogin:"screen.Send"XXXXXXXXXX"&chr(13)screen.WaitForString"Password:"screen.Send"XXXXXXXXXX"&chr(13)EndFunction'各厂家设备选择登陆子函数FunctionLandDevicescreen.Send""&chr(13)screen.WaitForString"Console>>"screen.Send"open"&Device(DeviceNumth)ResultOfType=screen.WaitForStrings("Cisco","NE40E","SE800",4)IfResultOfType=1ThenTypeOfCommand=CiscoAggreOfCommands'CommandNumth=0ElseIfResultOfType=2ThenTypeOfCommand=NE40EAggreOfCommands'CommandNumth=0ElseIfResultOfType=3ThenTypeOfCommand=SE800AggreOfCommands'CommandNumth=0ElseMsgBox"ErrorTypeOfDevice"DoLoopEndIfscreen.Send""&chr(13)screen.WaitForStrings"Username:","ogin:"screen.send"XXXXXXXXXX"&chr(13)screen.WaitForString"Password:"screen.Send"XXXXXXXXXX"&chr(13)DoLoopUntil(screen.WaitForStrings("NE40E>「,"SE800#",5)<>False)EndFunction’退出设备子函数FunctionExitDeviceIfResultOfType=1ThenElseIfResultOfType=2Thenscreen.Send""&"quit"&chr(13)Doscreen.Send""&chr(13)LoopUntil(screen.WaitForString("Console>>",1)<>False)ElseIfResultOfType=3Thenscreen.Send""&"exit"&chr(13)Doscreen.Send""&chr(13)LoopUntil(screen.WaitForString("Console>>",1)<>False)ElseEndIfEndFunctionFunctionShowAllDowhile(screen.WaitForStrings("More","more",3)<>False)crt.Screen.Send""LoopEndFunction‘风险命令过滤子函数FunctionRiskCommandsDimresultresult=screen.WaitForStrings(ArreOfRiskCommands,1)Ifresult<>FalseThenMsgBox"Thecommandyouareimportingexistsrisk!"DoLoopEndIfEndFunctionSubMaincrt.Screen.Synchronous=TrueLandIPNETForDeviceNumth=LBound(Device)ToUBound(Device)LandDeviceCommandNumth=0ForCommandNumth=LBound(TypeOfCommand)ToUBound(TypeOfCommand)screen.Send""&TypeOfCommand(CommandNumth)RiskCommandsscreen.Send""&chr(13)ShowAllIfscreen.WaitForString("More",1)<>FalseThenShowAllcrt.Sleep4000screen.Send""&chr(13)NextExitDeviceNextcrt.Screen.Synchronous=FalseEndSub二、自动化脚本编写三段模式模板从一个文件(目录为C:\Users\lilf\Desktop\ip.txt)里面自动读取设备IP地址,密码等,自动登录设备进入特权模式第一种情况:用户名+密码+特权密码方式$language="VBScript”$interface="1.0"SubMain'打开保存设备管理地址以及密码的文件ConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,paramsSetfso=CreateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTexFile("C:ip.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>True'读出每行line=file1.ReadLine'分离每行的参数IP地址用户名密码特权密码params=Split(line)'Telnet到这个设备上crt.Session.Connect("/TELNET"¶ms(0))'输入telnet用户名和密码crt.Screen.WaitForString“sername:"crt.Screen.Sendparams(1)&vbcrcrt.Screen.WaitForString“assword:"crt.Screen.Sendparams(2)&vbcr'进特权模式crt.Screen.Send“enable"&vbcr‘输入特权密码crt.Screen.WaitForString“assword:"crt.Screen.Sendparams(3)&vbcrcrt.Screen.WaitForString"#"ip.txt里相对应的IP地址、用户名、密码、特权密码,分别如下:adminruijieruijieadminruijieruijieadminruijieruijie第二种情况:密码+特权密码方式$language="VBScript”$interface="1.0"SubMain'打开保存设备管理地址以及密码的文件ConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,paramsSetfso=CreateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTextFile("C:ip.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>True'读出每行line=file1.ReadLine'分离每行的参数IP地址密码特权密码params=Split(line)'Telnet到这个设备上crt.Session.Connect("/TELNET"¶ms(0))'输入telnet密码crt.Screen.WaitForString“assword:"crt.Screen.Sendparams(1)&vbcr'进特权模式crt.Screen.Send“enable"&vbcr‘输入特权密码crt.Screen.WaitForString“assword:"crt.Screen.Sendparams(2)&vbcrcrt.Screen.WaitForString"#"ip.txt里相对应的IP地址、密码、特权密码,分别如下:adminruijieadminruijieadminruijie,,脚本发送命令:crt.Screen.Send要发送白命令”&chr(13)〃这个是回车,并且每行只发送一个命令如下,进入全局模式下,去掉OSPR!程号800crt.Screen.Send“conft"&chr(13)TOC\o"1-5"\h\zcrt.Screen.WaitForString"(config)#"crt.Screen.Send“norouterospf800"&chr(13)crt.Screen.WaitForString"(config)#"crt.Screen.Send“endir(13:)crt.Screen.WaitForString"#"crt.Screen.Send“wr"&chr(13)J这样去写是相当困难的,所以我们可以用先录制好需要进行相关操作的脚本,打开那个录制好的,复制那些相关的命令这样不用自己逐条手写了完成一台设备的操作之后,退出并进入下一台设备’完成后退出crt.Screen.WaitForString"#",3〃等待3s后如果没有其它操作,则自动断开crt.Session.Disconnectloopcrt.Screen.Synchronous=FalseEndSub三、应用案例真实场景:客户升级,客户有145台设备需要升级,其中有rgos.bin,也有少部分的rgnos.bin首先查找当前运行的是rgos.bin还是rgnos.bin运行脚本,并记录日志到一个文本中,按2.1.2图即可脚本如下:$language="VBScript”$interface="1.0"SubMainConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,paramsSetfso=CreateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTextFile("C:ip.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>Trueline=file1.ReadLineparams=Split(line)crt.Session.Connect"/TELNET"¶ms(0)crt.Screen.WaitForString“sername:"crt.Screen.Sendparams(1)&vbcrcrt.Screen.WaitForString“assword:"crt.Screen.Sendparams(2)&vbcrcrt.Screen.Send“enable"&vbcrcrt.Screen.WaitForString"#"crt.Screen.Send“showver"&vbcrcrt.Screen.WaitForString"#"crt.Screen.Sendvbcrcrt.Screen.WaitForString"#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous=FalseEndSubC:\Users\lilf\Desktop\ip.txt中的内容如下XXXXXXXX0XXXXXXXX完成showver后,查看日记记录,找到当前运行的是rgnos.bin设备,并把他的IP地址从ip.txt中去掉,新建ip1.txt升级rgos.bin:$language="VBScript”$interface="1.0"SubMainConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,params
Setfso=CeateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTextFile("C:ip.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>Trueline=file1.ReadLineparams=Split(line)crt.Session.Connect"/TELNET"¶ms(0)crt.Screen.WaitForString“sername:"crt.Screen.Sendparams(1)&vbcrcrt.Screen.WaitForString“assword:"crt.Screen.Sendparams(2)&vbcrcrt.Screen.Send“enable"&vbcr&vbcrcrt.Screen.WaitForString"#"&vbcrcrt.Screen.Send“copytftp:〃10.14.1/磔730_94674_install.binflash:rgos.bincrt.Screen.WaitForString“UPGRADINGOK.crt.Screen.WaitForString"#"crt.Screen.Sendvbcrcrt.Screen.WaitForString"#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous=FalseEndSubrgnos.bin的升级方法也是同样的在合适的时间重启:$language="VBScript”$interface="1.0"SubMainConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,paramsSetfso=CreateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTextFile("C:ip.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>Trueline=file1.ReadLineparams=Split(line)crt.Session.Connect"/TELNET"¶ms(0)crt.Screen.WaitForString“sername:"crt.Screen.Sendparams(1)&vbcrcrt.Screen.WaitForString“assword:"crt.Screen.Sendparams(2)&vbcrcrt.Screen.Send“enable"&vbcrTOC\o"1-5"\h\zcrt.Screen.WaitForString"#"crt.Screen.Send“reloadin1"&vbcrcrt.Screen.WaitForString"#"crt.Screen.Sendvbcrcrt.Screen.WaitForString"#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous=FalseEndSub重启过程中用批量ping工具监视,重启完成后查看是否都正常说明注意事项:如果运行过程中telnet到一台不可达的设备后,则脚本会中断,刚需要人工去再次运行,故运行之前先用批量ping工具测试设备连通性自动登录脚本下面是我根据上面的文档编写的没有用户名的自动登录$language="VBScript"$interface="1.0"SubMain’打开保存设备管理地址以及密码的文件ConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,paramsSetfso=CreateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTextFile("C:\ip.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>True’读出每行line=file1.ReadLine’分离每行的参数IP地址密码特权密码params=Split(line)'Telnet到这个设备上crt.Session.Connect("/TELNET"¶ms(0))'输入telnet用户名和密码crt.Screen.WaitForString"assword:"crt.Screen.Send"cisco"&vbcr'进特权模式crt.Screen.Send"enable"&vbcr'输入特权密码crt.Screen.WaitForString"assword:"crt.Screen.send"cisco"&vbcrcrt.Screen.WaitForString"#"crt.Screen.Send"showver"&vbcrcrt.Screen.WaitForString"#"crt.Screen.Send"clearcounters"&vbcr&vbcrcrt.Screen.WaitForString"#",300crt.Session.Disconnectloopcrt.Screen.Synchronous=FalseEndSub四、其他示例【示例一】简单自动登录$language="VBScript"$interface="1.0"'本脚本示范:自动登录到某台3550交换机设备,自动输入远程登录密码,同时自动进入特权模式'自动输入特权密码,同时运行showversion命令SubMaincrt.Screen.Synchronous=True'通过telnet连接至Ucrt.Session.Connect"/TELNET"crt.Screen.WaitForString"Password:"crt.Screen.Send"cisco"&vbCrcrt.Screen.WaitForString">"crt.Screen.Send"enable"&vbcrcrt.Screen.WaitForString"Password:"crt.Screen.Send"cisco"&vbcrcrt.Screen.waitForString"#"crt.Screen.Send"showversion"&vbcrcrt.Screen.waitForString"--More--"crt.Screen.Send""crt.Screen.Synchronous=FalseEndSub【示例二】自动备份配置$language="VBScript"$interface="1.0"'本脚本示范:从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份SubMain'打开保存设备管理地址以及密码的文件JConstForReading=1,ForWriting=2,ForAppending=8Dimfso,file1,line,str1,paramsSetfso=CreateObject("Scripting.FileSystemObject")Setfile1=fso.OpenTextFile("d:\config.txt",Forreading,False)crt.Screen.Synchronous=TrueDOWhilefile1.AtEndOfStream<>True’读出每行line=file1.ReadLine'分离每行的参数IP地址密码En密码params=Split(line)'Telnet到这个设备上crt.Session.Connect"/TELNET"¶ms(0)'输入telnet密码crt.Screen.WaitForString"Password:"crt.Screen.Sendparams(1)&vbcr,进特
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外科现场实验考试题及答案
- 社区治理三基三严考试题库及答案
- 179公司例会部门会议模板
- 钻机工岗位责任制培训课件
- 慢性阻塞性肺疾病稳定期呼吸康复与自我管理全流程指南
- DYJ900运架一体机安全管理制度培训
- 2026年广州体育职业技术学院单招综合素质考试题库附答案详解(完整版)
- 2026年广东茂名农林科技职业学院单招综合素质考试题库带答案详解
- 2026年广西培贤国际职业学院单招职业适应性考试题库含答案详解(夺分金卷)
- 财务部主任安全职责培训课件
- 《竞选三好学生》课件
- 近三年内未发生重大事故的安全生产承诺范本
- 岳阳职业技术学院单招职业技能测试参考试题库(含答案)
- 量子密码学与后量子密码学
- 部编版四年级下册语文写字表生字加拼音组词
- 威斯特年产10000吨纳米铜盐系列产品、6000吨叔丁基过氧化氢精馏及3000吨糊状过氧化二苯甲酰项目环境影响报告
- 广西-黄邵华-向量的数量积
- 1.2 国内外网络空间安全发展战略
- 2023年湖南省长沙县初中学生学科核心素养竞赛物理试题(含答案)
- 东北大学最优化方法全部课件
- 人教新课标六年级数学下册全册大单元教学设计(表格式)
评论
0/150
提交评论