您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > SecureCRT脚本编写方法
SecureCRT脚本编写方法一、SecureCRT工具常用到的几个函数阐述如下:在SecureCRT里,用得最多的应该就是crt.Screen,基本上很多操作都是基于屏幕的返回字来决定下一步该作何操作:第一:crt.Screen.WaitForString(KeyString,timewaiting)该函数是单字符串判断,KeyString是需要查找的关键字,timewaiting是一个超时阀值,例如:crt.Screen.WaitForString(people:,5)该行代码的意思就是在5秒内没有检测到people:出现,就执行下一条语句,如果改成:crt.Screen.WaitForString(people:)那就是指直到people:出现才执行下一行代码WaitForString是有返回值的,返回值是True或者False因此,可以根据返回值进行条件判断以确定一下条代码例如:If(crt.Screen.WaitForString(currentstate:UP,1)False)ThenportStatus=PortUPElseportStatus=PortDownEndIfmsgboxportStatus这段代码用于判断端口状态情况并记录下来.第二: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几个对话性的函数其实SecureCRT支持的脚本语言就是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.Screen'创建屏幕对象'定义全局变量:'Device变量为操作设备对象数组,作为存储设备名用;'CiscoAggreOfCommands变量为思科设备命令集合数组,作为存储思科设备命令用;'NE40EAggreOfCommands变量为华为NE40E设备命令集数组,作为存储华为NE设备命令用;'SE800AggreOfCommands变量为爱立信SE800设备命令集数组,作为存储爱立信SE800设备命令用;'ArrreOfRiskCommands变量为各厂家设备存在风险性操作命令的数组,作为存储过滤风险操作命令之用;'DeviceNumth变量为Device数组序号;'CommandNumth变量为各厂家命令数组的序号;'ResultOfType变量为判断设备类型标识符;'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,_displaylogbuffer,_displaydevice,_displaycpu-usage,_displaymemory-usage,_displayinterface,_disospfpeer,_displayiprouting-table)'爱立信SE800设备命令集合'单板注册信息'办卡加电自检'单板运行状态检查'检查背板运行状态'检查主控板冗余性'存储设备利用率'CPU利用率'内存利用率检查'端口运行状态检查'端口数据收发状态检查'电源使用情况检查'检查OSPF状态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.WaitForStringogin:screen.SendXXXXXXXXXX&chr(13)screen.WaitForStringPassword:screen.SendXXXXXXXXXX&chr(13)EndFunction'各厂家设备选择登陆子函数FunctionLandDevicescreen.Send&chr(13)screen.WaitForStringConsole>>screen.Sendopen&Device(DeviceNumth)ResultOfType=screen.WaitForStrings(Cisco,NE40E,SE800,4)IfResultOfType=1ThenTypeOfCommand=CiscoAggreOfCommands'CommandNumth=0ElseIfResultOfType=2ThenTypeOfCommand=NE40EAggreOfCommands'CommandNumth=0ElseIfResultOfType=3ThenTypeOfCommand=SE800AggreOfCommands'CommandNumth=0ElseMsgBoxErrorTypeOfDeviceDoLoopEndIfscreen.Send&chr(13)screen.WaitForStringsUsername:,ogin:screen.sendXXXXXXXXXX&chr(13)screen.WaitForStringPassword:screen.SendXXXXXXXXXX&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.SendLoopEndFunction'风险命令过滤子函数FunctionRiskCommandsDimresultresult=screen.WaitForStrings(ArreOfRiskCommands,1)IfresultFalseThenMsgBoxThecommandyouareimportingexistsrisk!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.Slee
本文标题:SecureCRT脚本编写方法
链接地址:https://www.777doc.com/doc-2858009 .html