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)Then
portStatus="PortUP"
Else
portStatus="PortDown"
EndIf
msgboxportStatus
这段代码用于判断端口状态情况并记录下来.
第二:crt.Screen.WaitForStrings("KeyString1","KeyString2",...,timeout)
用于多个字符串的判断,timeout的作用是一样的 例如:
crt.Screen.WaitForStrings("cisco","huawei","H3C",5)
意思就是在5秒内有检测到相应的字符时,返回相应的索引号(索引号是从1开始的) 如果都没有检查到,则返回0.因此,该函数的使用可以如下:
Dim SwitchKey
SwitchKey=crt.Screen.WaitForStrings("cisco","huawei","H3C",5)
Select case SwitchKey
case 1
MsgBox"思科设备"
case 2
MsgBox"华为设备"
case 3
MsgBox"华三设备"
case else
MsgBox"未知设备"
End Select
几个对话性的函数
其实SecureCRT支持的脚本语言就是VBS,这个脚本语言与VB有较大的不同,对于界面的支持性较差 不过也有几个对话性的函数
1、InputBox:提示用户输入参数
temp=inputbox("提示用户你输入参数的名称","对话框的名称"):需要将输入的参数赋值给某一个参数进行使用
2、输出函数msgbox
msgbox“给用户输出的信息对话框”
eg.求正方形面积的脚本
dimr,s
r=inputbox("请输入正方形的边长:","求正方形面积的程序")
s=r*r
msgbox(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,ArrreOfRiskCommands
DimDeviceNumth,CommandNumth,ResultOfType
DimTypeOfCommand
'爱立信设备集合
'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邻居状态检查
'路由信息检查
typeof array
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汇聚网管平台登陆子函数
FunctionLandIPNET
screen.Send""&chr(13)
screen.WaitForString"ogin:"
screen.Send"XXXXXXXXXX"&chr(13)
screen.WaitForString"Password:"
screen.Send"XXXXXXXXXX"&chr(13)
EndFunction
'各厂家设备选择登陆子函数
FunctionLandDevice
screen.Send""&chr(13)
screen.WaitForString"Console>>"
screen.Send"open"&Device(DeviceNumth)
ResultOfType=screen.WaitForStrings("Cisco","NE40E","SE800",4)
IfResultOfType=1Then
TypeOfCommand=CiscoAggreOfCommands
'CommandNumth=0
ElseIfResultOfType=2Then
TypeOfCommand=NE40EAggreOfCommands
'CommandNumth=0
ElseIfResultOfType=3Then
TypeOfCommand=SE800AggreOfCommands
'CommandNumth=0
Else
MsgBox"ErrorTypeOfDevice"

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。