使用SecureCRT批处理备份所有交换机路由器配置脚本
CRT脚本
CRT脚本1.登录脚本 (1)例: (1)2.自动巡检多个设备,会在crt下开启多个窗口,方便观察每台设备状态 (2)3.批量配置统一模板的接入层交换机 (3)1.登录脚本这个脚本方便用于交换机路由器登陆过程,可自行识别输入,例如若交换机登陆过程中不要求输入用户名,则免去该步骤例:#$language = "VBScript"#$interface = "1.0"crt.Screen.Synchronous = True' This automatically generated script may need to be' edited in order to work correctly.Sub Maincrt.Screen.Send ""&chr(13)if(crt.Screen.WaitForStrings("sername:",2)<>false)Thencrt.Screen.Send "用户名" &chr(13)elsecrt.Screen.Send ""&chr(13)End ifIf(crt.Screen.WaitForStrings("Password:",2)<>false)Thencrt.Screen.Send"密码"&chr(13)elsecrt.Screen.Send "" &chr(13)end ifIf (crt.Screen.WaitForString (">",2)<>false) Thencrt.Screen.Send "en" &chr(13)crt.Screen.WaitForString "Password:"crt.Screen.Send "enable密码" &chr(13)Elsecrt.Screen.Send ""&chr(13)End IfEnd sub2.自动巡检多个设备,会在crt下开启多个窗口,方便观察每台设备状态例:#$language = "VBScript"#$interface = "1.0"crt.Screen.Synchronous = TrueSub MainSet objCurrentTab1 = crt.GetTab(1)objCurrentTab1.session.disConnectobjCurrentTab1.ActivateobjCurrentTab1.session.Connect("/telnet 设备地址")if(objCurrentTab1.Screen.WaitForStrings("Username:", 2)<>Faluse)ThenobjCurrentTab1.Screen.Send "用户名" &chr(13)elseobjCurrentTab1.Screen.Send " " &chr(13)End ifIf(objCurrentTab1.Screen.WaitForStrings("Password:",2)<>Faluse)ThenobjCurrentTab1.Screen.Send"密码"&chr(13)elseobjCurrentTab1.Screen.Send " " &chr(13)end ifIf (objCurrentTab1.Screen.WaitForString (">",3)<>Faluse) ThenobjCurrentTab1.Screen.Send "en" &chr(13)objCurrentTab1.Screen.WaitForString "Password: ",2objCurrentTab1.Screen.Send "enable密码" &chr(13)ElseobjCurrentTab1.Screen.Send " " &chr(13)End IfobjCurrentTab1.Screen.Send "巡检指令" &chr(13)Set newtab = objCurrentTab1.Clone()Set objCurrentTab2 = crt.GetTab(2)objCurrentTab2.session.disConnectobjCurrentTab2.ActivateobjCurrentTab2.session.Connect("/telnet 设备地址")if(objCurrentTab2.Screen.WaitForStrings("Username:", 2)<>Faluse)ThenobjCurrentTab2.Screen.Send "用户名" &chr(13)elseobjCurrentTab2.Screen.Send " " &chr(13)End ifIf(objCurrentTab2.Screen.WaitForStrings("Password:",2)<>Faluse)ThenobjCurrentTab2.Screen.Send"密码"&chr(13)elseobjCurrentTab2.Screen.Send " " &chr(13)end ifIf (objCurrentTab2.Screen.WaitForString (">",3)<>Faluse) ThenobjCurrentTab2.Screen.Send "en" &chr(13)objCurrentTab2.Screen.WaitForString "Password: ",2objCurrentTab2.Screen.Send "enable" &chr(13)ElseobjCurrentTab2.Screen.Send " " &chr(13)End IfobjCurrentTab2.Screen.Send "巡检指令" &chr(13)end sub3.批量配置统一模板的接入层交换机一般大型企业架构新网络时需要着大量的接入层交换机,而配置大批统一样式的接入层交换机是件无聊且繁琐的工作,因此提供一个简易的配置脚本希望能够给大家带来方便。
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="PortUP"ElseportStatus="PortDown"EndIfmsgboxportStatus这段代码用于判断端口状态情况并记录下来.第二:crt.Screen.WaitForStrings("KeyString1","KeyString2",...,timeout)用于多个字符串的判断,timeout的作用是一样的例如:crt.Screen.WaitForStrings("cisco","huawei","H3C",5)意思就是在5秒内有检测到相应的字符时,返回相应的索引号(索引号是从1开始的)如果都没有检查到,则返回0.因此,该函数的使用可以如下:Dim SwitchKeySwitchKey=crt.Screen.WaitForStrings("cisco","huawei","H3C",5)Select case SwitchKeycase 1MsgBox"思科设备"case 2MsgBox"华为设备"case 3MsgBox"华三设备"case elseMsgBox"未知设备"End Select几个对话性的函数其实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,ArrreOfRiskComm andsDimDeviceNumth,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.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<>FalseThen MsgBox"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″Sub Main‘打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenText File(“C:\Users\lilf\Desktop\ip.txt”,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True‘读出每行line = file1.ReadLine‘分离每行的参数IP地址用户名密码特权密码params = Split (line)‘Telnet到这个设备上crt.Session.Connect (“/TELNET ” & params(0))‘输入telnet用户名和密码crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcr‘进特权模式crt.Screen.Send “enable” & vbcr‘输入特权密码crt.Screen.WaitForString “assword:”crt.Screen.Send params(3) & vbcrcrt.Screen.waitForString “#”ip.txt里相对应的IP地址、用户名、密码、特权密码,分别如下:192.168.1.1 admin ruijie ruijie192.168.1.2 admin ruijie ruijie192.168.2.1 admin ruijie ruijie……第二种情况:密码+特权密码方式# $language = “VBScript”# $interface = “1.0″Sub Main‘打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt”,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True‘读出每行line = file1.ReadLine‘分离每行的参数IP地址密码特权密码params = Split (line)‘Telnet到这个设备上crt.Session.Connect (“/TELNET ” & params(0))‘输入telnet密码crt.Screen.WaitForString “assword:”crt.Screen.Send params(1) & vbcr‘进特权模式cr t.Screen.Send “enable” & vbcr‘输入特权密码crt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.waitForString “#”ip.txt里相对应的IP地址、密码、特权密码,分别如下:192.168.1.1 admin ruijie192.168.1.2 admin ruijie192.168.2.1 admin ruijie……脚本发送命令:crt.Screen.Send”要发送的命令”& chr(13) //这个是回车,并且每行只发送一个命令如下,进入全局模式下,去掉OSPF进程号800crt.Screen.Send “conf t” & chr(13)crt.Screen.WaitForString “(config)#”crt.Screen.Send “no router ospf 800″& chr(13)crt.Screen.WaitForString “(config)#”crt.Screen.Send “end” & chr(13)crt.Screen.WaitForString “#”crt.Screen.Send “wr” & chr(13)J 这样去写是相当困难的,所以我们可以用先录制好需要进行相关操作的脚本,打开那个录制好的,复制那些相关的命令这样不用自己逐条手写了完成一台设备的操作之后,退出并进入下一台设备‘完成后退出crt.Screen.waitForString “#”,3 //等待3S后如果没有其它操作,则自动断开crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub三、应用案例真实场景:客户升级,客户有145台设备需要升级,其中有rgos.bin,也有少部分的rgnos.bin首先查找当前运行的是rgos.bin还是rgnos.bin运行脚本,并记录日志到一个文本中,按2.1.2图即可脚本如下:# $language = “VBScript”# $interface = “1.0″Sub MainConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> Trueline = file1.ReadLineparams = Split (line)crt.Session.Connect “/TELNET ” & params(0)crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.Send “enable” & vbcrcrt.Scree n.waitForString “#”crt.Screen.Send “show ver” & vbcrcrt.Screen.WaitForString “#”crt.Screen.Send vbcrcrt.Screen.waitForString “#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd SubC:\Users\lilf\Desktop\ip.txt中的内容如下10.243.124.1 XXXX XXXX10.243.124.10 XXXX XXXX完成show ver后,查看日记记录,找到当前运行的是rgnos.bin设备,并把他的IP地址从ip.txt中去掉,新建ip1.txt升级rgos.bin:# $language = “VBScript”# $interface = “1.0″Sub MainConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = C reateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> Trueline = file1.ReadLineparams = Split (line)crt.Session.Connect “/TELNET ” & params(0)crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.Send “enable” & vbcrcrt.Screen.waitForString “#”crt.Screen.Send “copy tftp://10.14.192.13/R2700_94674_install.bin flash:rgos.bin” & vbcr crt.Screen.WaitForString “UPGRADING OK.”crt.Screen.WaitForString “#”crt.Screen.Send vbcrcrt.Screen.waitForString “#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Subrgnos.bin的升级方法也是同样的在合适的时间重启:# $language = “VBScript”# $interface = “1.0″Sub MainConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> Trueline = file1.ReadLineparams = Split (line)crt.Session.Connect “/TELNET ” & params(0)crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.Send “enable” & vbcrcrt.Screen.waitForString “#”crt.Screen.Send “reload in 1″& vbcrcrt.Screen.WaitForString “#”crt.Screen.Send vbcrcrt.Screen.waitForString “#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub重启过程中用批量ping工具监视,重启完成后查看是否都正常说明注意事项:如果运行过程中telnet到一台不可达的设备后,则脚本会中断,刚需要人工去再次运行,故运行之前先用批量ping工具测试设备连通性自动登录脚本下面是我根据上面的文档编写的没有用户名的自动登录# $language = "VBScript"# $interface = "1.0"Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("C:\ip.txt",Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数IP地址密码特权密码params = Split (line)'Telnet到这个设备上crt.Session.Connect ("/TELNET " & params(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 "show ver" & vbcrcrt.Screen.waitForString "#"crt.Screen.Send "clear counters" & vbcr & vbcrcrt.Screen.waitForString "#" ,300crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub四、其他示例【示例一】简单自动登录# $language = "VBScript"# $interface = "1.0"'本脚本示范:自动登录到某台3550交换机设备,自动输入远程登录密码,同时自动进入特权模式'自动输入特权密码,同时运行show version命令Sub Maincrt.Screen.Synchronous = True'通过telnet连接到192.168.1.1crt.Session.Connect "/TELNET 192.168.1.1"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 "show version" & vbcrcrt.Screen.waitForString "--More--"crt.Screen.Send " "crt.Screen.Synchronous = FalseEnd Sub【示例二】自动备份配置# $language = "VBScript"# $interface = "1.0"'本脚本示范:从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,str1,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("d:\config.txt",Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数IP地址密码En密码params = Split (line)'Telnet到这个设备上crt.Session.Connect "/TELNET " & params(0)'输入telnet密码crt.Screen.WaitForString "Password:"crt.Screen.Send params(1) & vbcr'进特权模式crt.Screen.Send "enable" & vbcrcrt.Screen.WaitForString "Password:"crt.Screen.Send params(2) & vbcrcrt.Screen.waitForString "#"'备份目前Startup配置str1 = "copy startup t ftp://192.168.1.2/"str1 = str1 & "backup(" & params(0) &")" & ".cfg"crt.Screen.Send str1 & vbcrcrt.Screen.WaitForString "]?"crt.Screen.Send vbcrcrt.Screen.WaitForString "]?"crt.Screen.Send vbcr'备份完成后退出crt.Screen.waitForString "#",3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Subconfig.txt文本文件为事先编辑好的格式如:192.168.1.1 cisco cisco192.168.1.254 cisco cisco前面是IP地址,后面是telnet密码,最后是enable密码【示例三】多会话操作VBScript# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = trueDim NameDim NametreDim nTabCountnTabCount = crt.GetTabCount()for index = 1 to nTabCountset tab = crt.GetTab(index)tab.activateIf tab.Session.Connected = True Then‘这里以上都没有什么可以说的,之前的文章已经介绍的很多很多了,如果有不清楚的朋友可以看本文上提供的该系列脚本的其它部分的文章链接‘从这里往下就是最最核心的部分的了:)‘获取激活会话的名称Name = tab.Caption‘开始做匹配,并根据匹配的结果输入相应命令Select Case NametreCase “你的会话的名称1″‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称1的会话中你要输入的命令1″& chr(13)‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称1的会话中你要输入的命令2″& chr(13)crt.sleep 1000……..Case “你的会话的名称2″‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称2的会话中你要输入的命令1″& chr(13)‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称2的会话中你要输入的命令2″& chr(13)crt.sleep 1000……..Case “你的会话的名称3″‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称3的会话中你要输入的命令1″& chr(13)‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称3的会话中你要输入的命令2″& chr(13)crt.sleep 1000……..‘其它情况输出”the name of this session is wrong!”Case Else MsgBox “the name of this session is wrong!”End SelectElseMsgBox “this session is not connected,can not input any command!”End IfNextEnd Sub【示例四】多会话操作2以下可以实现在已经打开的绘画窗口中,按照打开顺序输入固定的命令,即第一个窗口输入****,然后激活第二个窗口输入*****,多窗口的命令输入是解决了,但是在实际的工作中发现,这样的一个脚本存在不少的缺陷:第一,会话窗口需要按照顺序手动打开,且要按照一定的顺序打开;第二,打开的顺序一旦有错,命令就会输入错误,命令输入没有自适应性;第三,会话的打开是要输入相应的命令,可是命令的结果仍然需要手动保存【示例五】设备log保存这个脚本主要是用来将我们在第一步中打开的会话用log保存在一个我们设定的路径上,这样就可以将后续输入命令的结果自动保存在本地,方便后续的查看对比等工作,下面就让我们来看看这个“打开各个板卡log脚本”的具体的编写情况:# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = true‘定义两个变量Dim NameDim nCurrentTab‘nTabCount赋值为打开的会话的总个数nTabCount = crt.GetTabCount()‘做循环for index = 1 to nTabCount‘激活第index个会话set tab = crt.GetTab(index)tab.activate‘判断log的情况并获取会话的名称‘log到路径“D:\新建文件夹\”中,并命名为“会话名称.log”If tab.Session.Connected = True ThenIf tab.Session.Logging = False ThenName = tab.Captiontab.Session.LogFileName = “D:\新建文件夹\”&Name&”.log”tab.Session.Log TrueElseIf tab.Session.Logging = True Thentab.Session.Log FalseName = tab.Captiontab.Session.LogFileName = “D:\新建文件夹\”&Name&”.log”tab.Session.Log TrueElse MsgBox “something unknown is wrong!”End IfElse MsgBox “this session is not connected,no need to be logged!”End IfNextEnd Sub【示例六】批量关闭log# $language = “VBScript”# $interface = “1.0″‘脚本开始Sub Main()‘从左到右激活每一个已经连接上的会话,并输入相关命令‘第一个连接的会话Set objCurrentTab1 = crt.GetTab(1)objCurrentTab1.ActivateIf objCurrentTab1.Session.Connected = True thenobjCurrentTab1.Screen.Send “相关命令1″& chr(13)objCurrentTab1.Screen.WaitForString “-> “objCurrentTab1.Screen.Send “相关命令2 ”& chr(13)objCurrentTab1.Screen.WaitForString “-> ”objCurrentTab1.Screen.Send “相关命令3 ”& chr(13)objCurrentTab1.S creen.WaitForString “-> ”End If‘第二个连接的会话Set objCurrentTab2 = crt.GetTab(2)objCurrentTab2.ActivateIf objCurrentTab2.Session.Connected = True thenobjCurrentTab2.Screen.Send “相关命令1″& chr(13)objCurren tTab2.Screen.WaitForString “-> “objCurrentTab2.Screen.Send “相关命令2 ”& chr(13)objCurrentTab2.Screen.WaitForString “-> “objCurrentTab2.Screen.Send “相关命令3″& chr(13)objCurrentTab2.Screen.WaitForString “-> “objCurrentTab2.Screen.Send “相关命令4″& chr(13) End if‘‘第N个连接的会话‘’脚本结束End Sub个脚本主要是用来将我们在可以一次性关闭“打开所有板卡会话脚本”中打开的会话log,这样在需要的操作完成后就可以及时的关闭log,达到控制log文件大小的作用:# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = true‘定义两个变量Dim NameDim nCurrentTab‘nTabCount赋值为打开的会话的总个数nTabCount = crt.GetTabCount()‘做循环for index = 1 to nTabCountset tab = crt.GetTab(index)‘激活第index个会话tab.activate‘关闭logIf tab.Session.Connected = True ThenIf tab.Session.Logging = False ThenMsgBox “this session is already unlogged!”ElseIf tab.Session.Logging = True Thentab.Session.Log FalseElse MsgBox “something unknown is wrong!”End IfElse MsgBox “this session is not connected,no need to be unlogged!”End IfNextEnd Sub【示例七】打开会话这个脚本要实现的就是一次性的打开我们要输入不同命令的所有的会话# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = true‘打开在SecureCRT中已经保存在huaye文件夹下的会话set tab1 = crt.session.Connectintab(”/s huaye/已存会话1″) set tab2 = crt.session.Connectintab(”/s huaye/已存会话2″) set tab3 = crt.session.Connectintab(”/s huaye/已存会话3″) set tab4 = crt.session.Connectintab(”/s huaye/已存会话4″)End Sub。
SecureCRT在网络设备配置管理中的实践应用
SecureCRT在网络设备配置管理中的实践应用作者:赵振涛来源:《科学与财富》2018年第30期摘要:本文论述了利用SecureCRT访问网络设备,自动保存访问记录,通过编写执行脚本实现对批量网络交换机配置的自动备份。
关键词:SecureCRT 脚本日志配置备份批处理SecureCRT是一款终端仿真软件,能够在Windows系统中登录UNIX、Linux的服务器主机以及网络设备,支持Telnet、SSH、Serial等多种连接协议,支持VBScript、Python脚本语言。
下面介绍在SecureCRT(ver 8.5)下创建连接会话、日志自动保存、脚本录制、批量自动备份网络设备配置。
1.创建连接会话File->Connect->New Session->SecureCRT Protocol选择Telnet->Host name输入设备IP地址-> SecureFX Protocol选择None->Session Name 输入会话名称->完成,方便以后登录。
2.日志自动保存Options->Global Options->General->Default Session->Edit Default Settings,将log file name 修改为%H_%S.log.log,自动记录每个操作,以主机名加会话名保存,方便查询。
3.脚本录制登录设备->Script->Start Recording Script->执行操作->(Script->Stop Recording Script),默认保存文件以.vbs结尾,其它网络设备执行同样操作命令时可通过Script->Run调用所录脚本一键完成所有操作。
4.批量自动备份网络设备配置首先确定备份哪些设备,其次建立TFTP服务器以接收上传的配置文件,最后需要编写调用备份脚本。
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="PortUP"ElseportStatus="PortDown"EndIfmsgboxportStatus这段代码用于判断端口状态情况并记录下来.第二:crt.Screen.WaitForStrings("KeyString1","KeyString2",...,timeout)用于多个字符串的判断,timeout的作用是一样的例如:crt.Screen.WaitForStrings("cisco","huawei","H3C",5)意思就是在5秒内有检测到相应的字符时,返回相应的索引号(索引号是从1开始的)如果都没有检查到,则返回0.因此,该函数的使用可以如下:Dim SwitchKeySwitchKey=crt.Screen.WaitForStrings("cisco","huawei","H3C",5)Select case SwitchKeycase 1MsgBox"思科设备"case 2MsgBox"华为设备"case 3MsgBox"华三设备"case elseMsgBox"未知设备"End Select几个对话性的函数其实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,ArrreOfRiskComm andsDimDeviceNumth,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.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<>FalseThen MsgBox"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″Sub Main‘打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenText File(“C:\Users\lilf\Desktop\ip.txt”,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True‘读出每行line = file1.ReadLine‘分离每行的参数IP地址用户名密码特权密码params = Split (line)‘Telnet到这个设备上crt.Session.Connect (“/TELNET ” & params(0))‘输入telnet用户名和密码crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcr‘进特权模式crt.Screen.Send “enable” & vbcr‘输入特权密码crt.Screen.WaitForString “assword:”crt.Screen.Send params(3) & vbcrcrt.Screen.waitForString “#”ip.txt里相对应的IP地址、用户名、密码、特权密码,分别如下:192.168.1.1 admin ruijie ruijie192.168.1.2 admin ruijie ruijie192.168.2.1 admin ruijie ruijie……第二种情况:密码+特权密码方式# $language = “VBScript”# $interface = “1.0″Sub Main‘打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt”,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True‘读出每行line = file1.ReadLine‘分离每行的参数IP地址密码特权密码params = Split (line)‘Telnet到这个设备上crt.Session.Connect (“/TELNET ” & params(0))‘输入telnet密码crt.Screen.WaitForString “assword:”crt.Screen.Send params(1) & vbcr‘进特权模式cr t.Screen.Send “enable” & vbcr‘输入特权密码crt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.waitForString “#”ip.txt里相对应的IP地址、密码、特权密码,分别如下:192.168.1.1 admin ruijie192.168.1.2 admin ruijie192.168.2.1 admin ruijie……脚本发送命令:crt.Screen.Send”要发送的命令”& chr(13) //这个是回车,并且每行只发送一个命令如下,进入全局模式下,去掉OSPF进程号800crt.Screen.Send “conf t” & chr(13)crt.Screen.WaitForString “(config)#”crt.Screen.Send “no router ospf 800″& chr(13)crt.Screen.WaitForString “(config)#”crt.Screen.Send “end” & chr(13)crt.Screen.WaitForString “#”crt.Screen.Send “wr” & chr(13)J 这样去写是相当困难的,所以我们可以用先录制好需要进行相关操作的脚本,打开那个录制好的,复制那些相关的命令这样不用自己逐条手写了完成一台设备的操作之后,退出并进入下一台设备‘完成后退出crt.Screen.waitForString “#”,3 //等待3S后如果没有其它操作,则自动断开crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub三、应用案例真实场景:客户升级,客户有145台设备需要升级,其中有rgos.bin,也有少部分的rgnos.bin首先查找当前运行的是rgos.bin还是rgnos.bin运行脚本,并记录日志到一个文本中,按2.1.2图即可脚本如下:# $language = “VBScript”# $interface = “1.0″Sub MainConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> Trueline = file1.ReadLineparams = Split (line)crt.Session.Connect “/TELNET ” & params(0)crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.Send “enable” & vbcrcrt.Scree n.waitForString “#”crt.Screen.Send “show ver” & vbcrcrt.Screen.WaitForString “#”crt.Screen.Send vbcrcrt.Screen.waitForString “#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd SubC:\Users\lilf\Desktop\ip.txt中的内容如下10.243.124.1 XXXX XXXX10.243.124.10 XXXX XXXX完成show ver后,查看日记记录,找到当前运行的是rgnos.bin设备,并把他的IP地址从ip.txt中去掉,新建ip1.txt升级rgos.bin:# $language = “VBScript”# $interface = “1.0″Sub MainConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = C reateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> Trueline = file1.ReadLineparams = Split (line)crt.Session.Connect “/TELNET ” & params(0)crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.Send “enable” & vbcrcrt.Screen.waitForString “#”crt.Screen.Send “copy tftp://10.14.192.13/R2700_94674_install.bin flash:rgos.bin” & vbcr crt.Screen.WaitForString “UPGRADING OK.”crt.Screen.WaitForString “#”crt.Screen.Send vbcrcrt.Screen.waitForString “#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Subrgnos.bin的升级方法也是同样的在合适的时间重启:# $language = “VBScript”# $interface = “1.0″Sub MainConst ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject(“Scripting.FileSystemObject”)Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> Trueline = file1.ReadLineparams = Split (line)crt.Session.Connect “/TELNET ” & params(0)crt.Screen.WaitForString “sername:”crt.Screen.Send params(1) & vbcrcrt.Screen.WaitForString “assword:”crt.Screen.Send params(2) & vbcrcrt.Screen.Send “enable” & vbcrcrt.Screen.waitForString “#”crt.Screen.Send “reload in 1″& vbcrcrt.Screen.WaitForString “#”crt.Screen.Send vbcrcrt.Screen.waitForString “#”,3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub重启过程中用批量ping工具监视,重启完成后查看是否都正常说明注意事项:如果运行过程中telnet到一台不可达的设备后,则脚本会中断,刚需要人工去再次运行,故运行之前先用批量ping工具测试设备连通性自动登录脚本下面是我根据上面的文档编写的没有用户名的自动登录# $language = "VBScript"# $interface = "1.0"Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("C:\ip.txt",Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数IP地址密码特权密码params = Split (line)'Telnet到这个设备上crt.Session.Connect ("/TELNET " & params(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 "show ver" & vbcrcrt.Screen.waitForString "#"crt.Screen.Send "clear counters" & vbcr & vbcrcrt.Screen.waitForString "#" ,300crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub四、其他示例【示例一】简单自动登录# $language = "VBScript"# $interface = "1.0"'本脚本示范:自动登录到某台3550交换机设备,自动输入远程登录密码,同时自动进入特权模式'自动输入特权密码,同时运行show version命令Sub Maincrt.Screen.Synchronous = True'通过telnet连接到192.168.1.1crt.Session.Connect "/TELNET 192.168.1.1"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 "show version" & vbcrcrt.Screen.waitForString "--More--"crt.Screen.Send " "crt.Screen.Synchronous = FalseEnd Sub【示例二】自动备份配置# $language = "VBScript"# $interface = "1.0"'本脚本示范:从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,str1,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("d:\config.txt",Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数IP地址密码En密码params = Split (line)'Telnet到这个设备上crt.Session.Connect "/TELNET " & params(0)'输入telnet密码crt.Screen.WaitForString "Password:"crt.Screen.Send params(1) & vbcr'进特权模式crt.Screen.Send "enable" & vbcrcrt.Screen.WaitForString "Password:"crt.Screen.Send params(2) & vbcrcrt.Screen.waitForString "#"'备份目前Startup配置str1 = "copy startup t ftp://192.168.1.2/"str1 = str1 & "backup(" & params(0) &")" & ".cfg"crt.Screen.Send str1 & vbcrcrt.Screen.WaitForString "]?"crt.Screen.Send vbcrcrt.Screen.WaitForString "]?"crt.Screen.Send vbcr'备份完成后退出crt.Screen.waitForString "#",3crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Subconfig.txt文本文件为事先编辑好的格式如:192.168.1.1 cisco cisco192.168.1.254 cisco cisco前面是IP地址,后面是telnet密码,最后是enable密码【示例三】多会话操作VBScript# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = trueDim NameDim NametreDim nTabCountnTabCount = crt.GetTabCount()for index = 1 to nTabCountset tab = crt.GetTab(index)tab.activateIf tab.Session.Connected = True Then‘这里以上都没有什么可以说的,之前的文章已经介绍的很多很多了,如果有不清楚的朋友可以看本文上提供的该系列脚本的其它部分的文章链接‘从这里往下就是最最核心的部分的了:)‘获取激活会话的名称Name = tab.Caption‘开始做匹配,并根据匹配的结果输入相应命令Select Case NametreCase “你的会话的名称1″‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称1的会话中你要输入的命令1″& chr(13)‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称1的会话中你要输入的命令2″& chr(13)crt.sleep 1000……..Case “你的会话的名称2″‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称2的会话中你要输入的命令1″& chr(13)‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称2的会话中你要输入的命令2″& chr(13)crt.sleep 1000……..Case “你的会话的名称3″‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称3的会话中你要输入的命令1″& chr(13)‘等待1秒钟crt.sleep 1000tab.Screen.Send “在名称3的会话中你要输入的命令2″& chr(13)crt.sleep 1000……..‘其它情况输出”the name of this session is wrong!”Case Else MsgBox “the name of this session is wrong!”End SelectElseMsgBox “this session is not connected,can not input any command!”End IfNextEnd Sub【示例四】多会话操作2以下可以实现在已经打开的绘画窗口中,按照打开顺序输入固定的命令,即第一个窗口输入****,然后激活第二个窗口输入*****,多窗口的命令输入是解决了,但是在实际的工作中发现,这样的一个脚本存在不少的缺陷:第一,会话窗口需要按照顺序手动打开,且要按照一定的顺序打开;第二,打开的顺序一旦有错,命令就会输入错误,命令输入没有自适应性;第三,会话的打开是要输入相应的命令,可是命令的结果仍然需要手动保存【示例五】设备log保存这个脚本主要是用来将我们在第一步中打开的会话用log保存在一个我们设定的路径上,这样就可以将后续输入命令的结果自动保存在本地,方便后续的查看对比等工作,下面就让我们来看看这个“打开各个板卡log脚本”的具体的编写情况:# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = true‘定义两个变量Dim NameDim nCurrentTab‘nTabCount赋值为打开的会话的总个数nTabCount = crt.GetTabCount()‘做循环for index = 1 to nTabCount‘激活第index个会话set tab = crt.GetTab(index)tab.activate‘判断log的情况并获取会话的名称‘log到路径“D:\新建文件夹\”中,并命名为“会话名称.log”If tab.Session.Connected = True ThenIf tab.Session.Logging = False ThenName = tab.Captiontab.Session.LogFileName = “D:\新建文件夹\”&Name&”.log”tab.Session.Log TrueElseIf tab.Session.Logging = True Thentab.Session.Log FalseName = tab.Captiontab.Session.LogFileName = “D:\新建文件夹\”&Name&”.log”tab.Session.Log TrueElse MsgBox “something unknown is wrong!”End IfElse MsgBox “this session is not connected,no need to be logged!”End IfNextEnd Sub【示例六】批量关闭log# $language = “VBScript”# $interface = “1.0″‘脚本开始Sub Main()‘从左到右激活每一个已经连接上的会话,并输入相关命令‘第一个连接的会话Set objCurrentTab1 = crt.GetTab(1)objCurrentTab1.ActivateIf objCurrentTab1.Session.Connected = True thenobjCurrentTab1.Screen.Send “相关命令1″& chr(13)objCurrentTab1.Screen.WaitForString “-> “objCurrentTab1.Screen.Send “相关命令2 ”& chr(13)objCurrentTab1.Screen.WaitForString “-> ”objCurrentTab1.Screen.Send “相关命令3 ”& chr(13)objCurrentTab1.S creen.WaitForString “-> ”End If‘第二个连接的会话Set objCurrentTab2 = crt.GetTab(2)objCurrentTab2.ActivateIf objCurrentTab2.Session.Connected = True thenobjCurrentTab2.Screen.Send “相关命令1″& chr(13)objCurren tTab2.Screen.WaitForString “-> “objCurrentTab2.Screen.Send “相关命令2 ”& chr(13)objCurrentTab2.Screen.WaitForString “-> “objCurrentTab2.Screen.Send “相关命令3″& chr(13)objCurrentTab2.Screen.WaitForString “-> “objCurrentTab2.Screen.Send “相关命令4″& chr(13) End if‘‘第N个连接的会话‘’脚本结束End Sub个脚本主要是用来将我们在可以一次性关闭“打开所有板卡会话脚本”中打开的会话log,这样在需要的操作完成后就可以及时的关闭log,达到控制log文件大小的作用:# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = true‘定义两个变量Dim NameDim nCurrentTab‘nTabCount赋值为打开的会话的总个数nTabCount = crt.GetTabCount()‘做循环for index = 1 to nTabCountset tab = crt.GetTab(index)‘激活第index个会话tab.activate‘关闭logIf tab.Session.Connected = True ThenIf tab.Session.Logging = False ThenMsgBox “this session is already unlogged!”ElseIf tab.Session.Logging = True Thentab.Session.Log FalseElse MsgBox “something unknown is wrong!”End IfElse MsgBox “this session is not connected,no need to be unlogged!”End IfNextEnd Sub【示例七】打开会话这个脚本要实现的就是一次性的打开我们要输入不同命令的所有的会话# $language = “VBScript”# $interface = “1.0″‘~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sub Main()crt.screen.Synchronous = true‘打开在SecureCRT中已经保存在huaye文件夹下的会话set tab1 = crt.session.Connectintab(”/s huaye/已存会话1″) set tab2 = crt.session.Connectintab(”/s huaye/已存会话2″) set tab3 = crt.session.Connectintab(”/s huaye/已存会话3″) set tab4 = crt.session.Connectintab(”/s huaye/已存会话4″)End Sub。
SecureCRT脚本的批量管理
利用SecureCRT脚本,实现对N台服务器的批量管理SecureCRT是一款终端仿真程序,支持ssh、Telnet和rlogin协议,可以在windows平台通过它对unix、linux进行访问,相比同类软件,它的强大之处就在于支持vbs、js等脚本,利用脚本可实现批量操作,如:获取服务器相关信息、部署软件、修改密码、升级软件、上传/下载、修改文件等等,还能生成excel报表,最大的优点,就是无需在服务器端安装agent,这是其他软件无法与之相媲美的,当初在给工行做项目的时候,在3000多台服务器上部署软件,用的就是SecureCRT脚本。
下面分享一个例子:该脚本用vbs语言编写,脚本会读取iplist文件,通过ssh方式连接服务器,在centos5.5_64bit系统上自动安装lrzsz软件,脚本对目标服务器进行了判断,如已经安装lrzsz软件则退出,否则执行安装程序。
SecureCRT-vbs脚本使用说明一.脚本运行环境1. 需要在客户端安装SecrueCRT软件二.脚本使用方法1.打开SecureCRT,不连接任何会话2.选择脚本菜单----执行,选择你要运行的脚本,如弹出下面的提示,选择接受并保存。
3.脚本执行过程中,最好不要进行其他操作,脚本执行完后会自动退出三.自动安装脚本参数介绍:outputpath = ".\install-log.txt" '输出文件,脚本运行后会自动创建iplistpath = ".\ip.txt" 'ip列表文件,需提前创建,每行有2列,用1个空格作为分隔符,首尾不能有多余的空格或其他字符,iplist格式如下:192.168.0.1 123456192.168.0.2 abcd1234loginuser = "root" '登陆用户productpath = "/usr/local/src" '产品路径,可自行定义Ssh、Main部分都已写成函数,一般情况下无需更改。
SecureCRT批量备份路由器设置
在日常工作中,可能面临几百台网络设备的管理,如何高速可靠的对这些设备进行管理备份下面以华为H3C为例:实测1百多台设备非常高效且容错效果好不易中断,耗时几分钟即对所有路由器配置进行了备份给出的示例脚本并非网上所流传的VBS脚本,而是用python编写的脚本,进行了大量容错处理与测试。
具有如下特点:1、在log目录下自动建立当前日期命名的文件夹,用于存放导出的配置文件2、在log目录下自动生成当前日期命名的日志文件,记录操作失败的设备3、对于不能成功连接的设备或登录失败的设备,会自动跳过,不影响后续操作,不会卡在中间,不会造成批量操作中断4、首先使用列表中用户名和密码尝试登录,若失败,则尝试使用列表中的用户名和”123456”(可在脚本中自己修改)进行登录脚本运行准备工作:1、首先建立如下目录: d:\h3cbackup\log ,此目录可配合脚本修改成其它目录2、建立list设备列表文件,文件类型为文本文件,每行为1台设备相关信息,用空格分割,如下:IP地址用户名密码192.168.1.1admin123321192.168.1.2root321123―――――――这里是分割线,下面是脚本――――――――――――――复制分割线间的内容到记事本,修改扩展名为py――――# $language = "Python"# $interface = "1.0"#本脚本用途:从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份import datetimeimport os#获取当前系统日期并格式化日期格式为YYYYMMDDtoday = datetime.date.today()monthStr="{0:02}".format(today.month)dayStr="{0:02}".format(today.day)todayStr=str(today.year)+monthStr+dayStr#打开保存设备管理地址密码列表文件filePath=crt.Dialog.FileOpenDialog("请选择设备列表文件","打开","list.txt","(*.txt)|*.txt")listfile=open(filePath,"r")crt.Screen.Synchronous = True#创建日志文件,记录操作失败设备列表logfile=open("d:\\h3cbackup\\log\\"+todayStr+".txt","w+") #在log目录下自动创建日期命名的文件夹path="d:\\h3cbackup\\log\\"+todayStrif os.path.exists(path)==False:os.mkdir(path)#numSuc记录成功操作个数,numFai记录操作失败个数numSuc=0numFai=0#读出每行,循环操作for line in listfile:#如果遇到只有换行符无内容的行直接跳过if line=="\n":continue#分离每行的参数IP地址用户名密码超级密码params=line.split()#Telnet到这个设备上并判断是否连接成功errcode = 0try:crt.Session.Connect("/TELNET "+params[0]) except ScriptError:errcode = crt.GetLastError()if errcode != 0:#连接失败跳过后续代码进入下次循环logfile.write("连接失败:"+params[0]+"\n")numFai+=1continueelif crt.Session.Connected:r=crt.Screen.WaitForStrings(['login:','Username:'],1)crt.Screen.Send(params[1]+"\r")crt.Screen.WaitForString('Password:',1)if r==1:crt.Screen.Send(params[2]+"\r")if r==2:crt.Screen.Send("123456\r")if crt.Screen.WaitForString(">",2)==False:crt.Screen.WaitForStrings(['login:','Username:'],10)crt.Screen.Send(params[1]+"\r")crt.Screen.Send(params[2]+"\r")#备份目前runing-config配置crt.Session.LogFileName = path+"\\" + params[0] + ".txt"if crt.Session.Logging==False:crt.Session.Log(True)crt.Screen.Send("dis cu\r")while crt.Screen.WaitForString("---- More ----",2):crt.Screen.Send(" ")#备份完成后退出if crt.Screen.WaitForString("return",1):crt.Screen.Send(" ")crt.Session.Disconnect()numSuc+=1else:logfile.write("未知原因:"+params[0]+"\n")numFai+=1logfile.close()crt.Screen.Synchronous = Falsecrt.Dialog.MessageBox("操作完毕\n共:"+str(numSuc)+"个设备操作成功\n共:"+str(numFai)+"个设备操作失败","",64|0)―――――――――这里是分割线――――――――――结束如不是以return 结束,可以自行修改这里的关键字if crt.Screen.WaitForString("return",1):想偷懒的赶紧试试吧附:Crt脚本运行方法,打开CRT软件―〉选择Script-〉选择脚本文件-〉选择设备列表list文件-〉等待运行结束查看结果。
网络交换机配置备份脚本介绍
一、脚本介绍1.本文的自动配置备份脚本是通过BAT脚本自动运行CRT-登录交换机-查看当前配置-记录会话-保存会话的方式实现的。
2.本方法需要把以下4个文件要放置在同一目录下:(1)配置备份.bat主要实现统计备份前后文件数量,运行CRT(2)配置备份.vbs此脚本实现CRT自动登录交换机,并查看配置记录会话(3)SWIP.txt 记录交换机IP(4)swbackup.log备份日志,备份完成情况会记录到此文件中二、配置备份.bat脚本1.命令窗口标题设置命令窗口名称显示为“配置备份程序”@echo offcolor 0atitle 配置备份程序2.修改日期格式::调整时间格式为:14:00:00set time1=%time:~0,8%::调整日期格式为:2017-09-01set y=%date:~0,4%set m=%date:~5,2%set d=%date:~8,2%::调整日期格式,去除日期前面的0,结果为:2017-9-1(这里只的我的个人需要)if %m% == 01 (set m=1)if %m% == 02 (set m=2)if %m% == 03 (set m=3)if %m% == 04 (set m=4)if %m% == 05 (set m=5)if %m% == 06 (set m=6)if %m% == 07 (set m=7)if %m% == 08 (set m=8)if %m% == 09 (set m=9)if %d% == 01 (set d=1)if %d% == 02 (set d=2)if %d% == 03 (set d=3)if %d% == 04 (set d=4)if %d% == 05 (set d=5)if %d% == 06 (set d=6)if %d% == 07 (set d=7)if %d% == 08 (set d=8)if %d% == 09 (set d=9)set date1=%y%-%m%-%d%2.设置配置备份目录路径配置我这里统一保存在E盘-配置备份-日期-目录下set dir=E:\配置备份\%y%-%m%-%d%3.自动计算需要备份的设备数量,即SWIP.txt文件的行数set "file=E:\FANTAWILD\配置备份脚本\SWIP.txt"for /f "delims=" %%a in (%file%) do set/a rows+=14.命令窗口打印显示以下信息echo.echo ********************************************echo 网络设备配置备份echo ********************************************echo 备份日期:%date1% %time1%echo 设备数量:%rows%echo 备份目录:%dir%echo ********************************************5.启动CRT软件,并执行配置备份.vbs脚本start "" "D:\Program Files\SecureCRT-7.0\App\VanDykeClients\SecureCRT.exe" /SCRIPT E:\FANTAWILD\配置备份脚本\配置备份.vbs >nul6.预计备份时间:: 通过多次测试,预计每台设备备份时间为2秒钟(不同设备收集配置时间可能不一样)总的时间就是2乘设备数量set /a rows2=%rows%*2echo 预计备份时间%rows2% 秒7.进度条,纯属为了界面动态美观(可忽略)::echo 正在备份,请稍候::进度条1set /p= 正在备份,请稍候<nulset /a a=1:aset /a a+=1set /p=.<nul::for %%a in ( ">") do (set /p=%%a<nul &ping -n 2 127.1>nul)ping -n 2 127.1>nulif not %a%==%rows2% goto a8.备份完成后,结束CRT进程taskkill /f /im SecureCRT.exe >nulecho.9.统计配置文件数量,即备份完成后备份目录里的文件数量set n=0for /f "delims=" %%a in ('dir /a-d /b /s "%dir%" ') do (set /a n+=1)10.指定备份完成时时间set time2=%time:~0,8%11.命令窗口显示echo ********************************************echo 备份完成,共%rows% 台设备,已完成%n% 台设备echo 备份完成时间:%date1% %time2%echo ********************************************echo.12.为了方便查看备份记录,将此次的备份情况另外输出到日志文件echo.>>swbackup.logecho.>>swbackup.logecho============================================>>swbackup.log echo 备份开始时间:%date1% %time1%>>swbackup.logecho 备份完成时间:%date1% %time2%>>swbackup.logecho 设备数量:%rows% >>swbackup.logecho 当前备份数量:%n% >>swbackup.logecho 备份目录:%dir%>>swbackup.logecho============================================>>swbackup.log13.BAT配置备份结束pause三、配置备份vbs脚本此脚本是在CRT中使用的,实现CRT自动登录交换机,并收集记录配置信息1.基本配置# $language = "VBScript"# $interface = "1.0"2.从一个文件里面自动读取设备IP地址,用户名,密码,并创建日志文件,为记录配置信息做准备Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,str1,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("E: \配置备份脚本\SWIP.txt",Forreading, False)crt.Screen.Synchronous = TruedtmNowDate = Now()dtmNowDate = Year(dtmNowDate) & "-" & Month(dtmNowDate) & "-" & Day(dtmNowDate)DO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数设备名称、IP地址、用户名、密码,然后创建设备名称为名的txt文本,作为配置记录文件params = Split(line)crt.session.LogFileName = "E:\配置备份\" & dtmNowDate & "\"& params(1) &".txt"call crt.session.Log(False)call crt.session.Log(True) '开启日志crt.Screen.Synchronous = True '开启屏幕同步2.判断设备类型H3C,并开始备份配置(这里主要进行三种设备备份:H3C、Juniper、Cisco)'首先Telnet到这个设备上,params(2)为文件中提取的设备IPcrt.Session.Connect "/TELNET " & params(2)'H3C设备的配置备份If params(0) = "h3c" Then'自动输入telnet用户名crt.Screen.WaitForString "Username:"crt.Screen.Send params(3) & vbcr'自动输入telnet密码crt.Screen.WaitForString "Password:"crt.Screen.Send params(4) & vbcr'收集设备运行信息str1 = "display environment"crt.Screen.Send str1 & vbcr'收集版本信息str2 = "display version"crt.Screen.Send str2 & vbcr'备份h3c配置str3 = "dis cu"crt.Screen.Send str3 & vbcrcrt.Screen.WaitForString "More"crt.Screen.Send " " & vbcr'备份完成后退出crt.Screen.waitForString "return"crt.Session.Disconnect()end if2.判断设备类型Juniper,并开始备份配置If params(0) = "juniper" Then'自动输入telnet密码crt.Screen.WaitForString "login:"crt.Screen.Send params(3) & vbcr'自动输入telnet密码crt.Screen.WaitForString "Password:"crt.Screen.Send params(4) & vbcr'收集设备运行信息str1 = "show chassis environment"crt.Screen.Send str1 & vbcr'收集版本信息str2 = "show version"crt.Screen.Send str2 & vbcr'备份juniper配置str3 = "show configuration | display set"crt.Screen.Send str3 & vbcrcrt.Screen.WaitForString "more"crt.Screen.Send "" & vbcr'备份完成后退出crt.Screen.waitForString ">"crt.Session.Disconnect()end if3.判断设备类型Cisco,并开始备份配置'Cisco设备的配置备份If params(0) = "cisco" Then'输入telnet用户名crt.Screen.WaitForString "Username:"crt.Screen.Send params(3) & vbcr'输入telnet密码crt.Screen.WaitForString "Password:"crt.Screen.Send params(4) & vbcr'备份juniper配置str1 = "show run"crt.Screen.Send str1 & vbcr'crt.Screen.WaitForString "more"crt.Screen.Send "" & vbcr'备份完成后退出crt.Screen.waitForString "end"crt.Session.Disconnect()end ifloopCall crt.Session.Log(False)crt.Screen.Synchronous = FalseEnd Sub四、设备IP列表SWIP.txt里面有要备份配置的设备类型、名称、IP、用户名、密码,如下示例类型名称IP 用户名密码juniper 9F-01 10.10.1.1 admin admin123h3c 9F-02 10.10.1.2 admin admin123五、swbackup.log备份日志文件从“配置备份.bat ”里产生的备份记录会重定向输出到此文件中结果如下:============================================备份开始时间:2017-9-01 01:14:20备份完成时间:2017-9-01 01:14:28设备数量:40当前备份数量:40备份目录:E:\配置备份\2017-9-01============================================六、“配置备份.bat ”执行结果展示。
securecrt使用教程、SecureCRT配置详细图文教程(2021年整理精品文档)
securecrt使用教程、SecureCRT配置详细图文教程编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(securecrt使用教程、SecureCRT配置详细图文教程)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为securecrt使用教程、SecureCRT配置详细图文教程的全部内容。
securecrt使用教程、SecureCRT配置详细图文教程Secure CRT是一款支持SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等协议的终端仿真程序,最吸引我的是,SecureCRT 支持标签化SSH 对话,从而可方便地管理多个SSH 连接,设置项也极为丰富。
简单的说是Windows下登录UNIX、Linux服务器主机的软件。
SecureCRT支持SSH,同时支持Telnet和rlogin协议.SecureCRT是一款用于连接运行包括Windows、UNIX、VMS的理想工具。
通过使用内含的VCP命令行程序可以进行加密文件的传输。
有流行CRT Telnet客户机的所有特点,包括:自动注册、对不同主机保持不同的特性、打印功能、颜色设置、可变屏幕尺寸、用户定义的键位图和优良的VT100、VT102、VT220、ANSI竞争,能从命令行中运行或从浏览器中运行,其它特点包括文本手稿、易于使用的工具条、用户的键位图编辑器、可定制的ANSI颜色等。
SecureCRT的SSH协议支持DES,3DES和RC4密码和密码与RSA 鉴别。
1、SecureCRT下载2、SecureCRT 配置颜色直接修改全局选项,以免每加个服务器都要重新设置一次:全局设置:键盘方案的选择:终端——》仿真终端选择“Linux”,勾选“ANSI颜色” 和“使用颜色方案”,终端颜色配置请见下面后续。
巧用SecureCRT自动备份
巧用SecureCRT自动备份
何涛
【期刊名称】《网络运维与管理》
【年(卷),期】2015(000)012
【摘要】SecureCRT支持SSH,同时支持Telnet和rlogin协议。
SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。
通过使用内含的VCP命令行程序可以进行加密文件的传输。
【总页数】3页(P63-65)
【作者】何涛
【作者单位】北京
【正文语种】中文
【中图分类】TP311.13
【相关文献】
1.巧用SecureCRT保存日志 [J], 张亮;
2.简化操作实现数据自动备份——巧用WinRARAuto实现定时备份功能 [J], 郭建伟;张永夏;
3.巧用SecureCRT脚本实现网络设备配置备份自动化 [J], 石进
4.巧用SecureCRT恢复IOS [J], 李虎;成大伟
5.巧用FlashFxp自动备份Domino [J], 熊建国
因版权原因,仅展示原文概要,查看原文内容请购买。
【免费阅读】交换机自动登录、批量备份、批量配置以及自动透传vlan的实现
交换机自动登录、批量备份、批量配置以及自动透传vlan的实现2作者:鲍继川时间:2013.5.1332目录1前言2.交换机自动登录实现3..交换机自动批量备份实现4..交换机批量配置实现5.交换机自动透传vlan实现5.1 对交换机编号,记录接口信息25.2 生成交换机接口信息矩阵5.3 实现深度优先算法和测试路径5.4 生成ie输入界面5.5 实现两个交换机之间透传vlan6.总结7.附录代码备注:文档所有的代码针对华为系列交换机,可能有些交换机3526等等,在执行保存时会出错,所有程序如果看懂能自己改就非常好了。
这需要学习javascript编程和securecrt编程,我是边写边学的。
我以前所有的代码全部用vbscript写的,后来考虑到vbscript循环控制不好,全部用javascript改写了一遍。
后来我自己开专线业务,比如F400自动开局,9806H开局等等,全部用可视化的ie界面开局。
非常自动化,也非常好用,用自己写的东西开局,非常流畅。
联系电话:1899667799 邮箱:****************321前言自从进入事数据方面工作以来,不断的感觉到了对交换机和其他设备数据操作的繁琐和重复。
很多业务的开通都是重复性的操作,只是几个参数的不同。
为了节省时间和提高效率,通过不断的摸索和学习,查看各种资料,结合编程和算法,慢慢研究出对设备的自2动批量控制和自动开通业务。
比如,从交换机A透传vlan到交换机B,我们不再需要考虑中间的交换机走向,而让程序自动寻路去透传vlan。
下面就交换机为例详细阐述如何实现对交换机的自动登录,批量配置,批量备份,以及自动透传vlan。
322.交换机自动登录实现假设交换机的拓扑图如下:在图中我们一共可以看到9个交换机分别为A 、B 、C 、D 、E 、F 、G 、H 、I ,然后对交换机的信息保存为以下txt 格式文件,每行分别依次为交换机的登录ip 、用户名、密码、二级密码,中间用空格隔开。
不同厂商网络设备配置备份脚本改进之路
不同厂商网络设备配置备份脚本改进之路
赖文书
【期刊名称】《网络安全和信息化》
【年(卷),期】2022()2
【摘要】网络设备的配置备份是网络管理的日常工作,也是保障网络稳定运行的重要手段。
网络配置的备份方式包括自动和手动。
前者通过网络运维管理平台的SNMP协议实现,如北塔的BTSO智慧运维平台、华三的iMC智能管理平台等,可以定期自动运行配置备份命令;后者是远程登录网络设备,手工执行网络配置备份命令再进行保存,当网络规模不大时比较容易完成,但若管理的网络设备有上百台时,就耗时费力了。
【总页数】4页(P145-148)
【作者】赖文书
【作者单位】四川
【正文语种】中文
【中图分类】TP3
【相关文献】
1.巧用SecureCRT脚本实现网络设备配置备份自动化
2.脚本编程实现自动备份网络设备配置文件
3.一种网络设备信息管理及配置脚本收集系统
4.基于Python编程备份网络设备配置
5.网络设备配置自动备份程序的设计与实现
因版权原因,仅展示原文概要,查看原文内容请购买。
使用SecureCRT批处理备份所有交换机路由器配置脚本
使用SecureCRT批处理备份所有交换机路由器配置脚本小弟测试了SecureCRT脚本批量执行备份cisco交换机或者路由器配置文件的功能。
测试通过(成功批量备份28台交换机,时间小于1分钟)。
此脚本可以根据你的需要修改,改成其他功能,希望有需要的同学扩展思路。
使用SecureCRT批处理备份所有交换机配置的脚本,使用方法:1、在D盘新建一个文件夹,命名为SWbackup,打开文件夹,新建一个文本文件list.txt,编辑并保存这个文本文件,每行输入3列分别是:交换机ip密码enable密码;例如:192.168.1.1 cisco cisco192.168.1.2 cisco cisco(有多少交换机就写多少行)2、新建一个文本文件,将下面的代码(两条分割线内的内容,不包括分割线)复制到文本文件内,保存关闭。
将文本文件重命名为:备份所有交换机配置批处理脚本.vbs(注意要现显示文件后缀名才能修改)--------------------------------------------------------------------------------------------------------------------------# $language = "VBScript"# $interface = "1.0"'本脚本示范:从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,str1,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("d:\SWbackup\list.txt",Forreading, False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数IP地址密码En密码params = Split (line)crt.session.LogFileName = "d:\SWbackup\log\\" & params(0) & ".txt"crt.session.Log(true)crt.Session.Connect "/TELNET " & params(0)crt.Screen.WaitForString "Password:"crt.Screen.Send params(1) & vbcr'进特权模式crt.Screen.Send "enable" & vbcrcrt.Screen.WaitForString "Password:"crt.Screen.Send params (2) & vbcrcrt.Screen.waitForString "#"'备份目前runing-config配置str1 = "show run"crt.Screen.Send str1 & vbcrcrt.Screen.WaitForString " --More-- "crt.Screen.Send"" & vbcr'备份完成后退出crt.Screen.waitForString "!" & vbcrlf & "end"crt.Session.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub'list.txt需要先做好。
利用SecureCRT的脚本功能自动定时执行任务
SecureCRT是一款仿真终端工具,常用来telnet到路由器或交换机上,它还支持VBscript和Jscript脚本。
下边讲述一种在WINDOWS下利用SecureCRT的脚本功能自动定时执行一些登录到路由器或交换机来执行的任务:1.写好要SecureCRT执行的脚本,可登录执行任何操作。
如se800.vbs,保存在d:\se800下。
内容附在最后。
2.写好启动SecureCRT执行脚本的批处理文件。
如add_cmd.bat,保存在d:\se800下内容如下:d:cd \se800"C:\Program Files\SecureCRT\SecureCRT.EXE" /T /SCRIPT se800.vbs3.在WINDOWS的控制面板的任务计划里增加任务,如在23:30执行add_cmd.bat,大功告成。
====================se800.vbs的内容:====================# $language = "VBScript"# $interface = "1.0"Function my_Date()dim y,m,d,h,mmDim nowDate,mytimenowDate=Now()mytime=time()y=Year(nowDate)m=Month(nowDate)d=Day(nowDate)h=hour(mytime)mm=minute(mytime)my_Date=y & "-" & m & "-" & dEnd FunctionSub mainDim fso, fHost,fCMDbsn,fCMDscs, strLineHost,strLineCommand,strLogfile,strArrayConst ForReading = 1Const Hostip=0Const user=1Const password=2Const superpwd=3Const hostname=0Const NodeType=4Const my_user="jhxsy"Const my_pass="2381654"Const ScriptPath="D:\se800\"Const LogPath="D:\se800\log\"Set fso = CreateObject("Scripting.FileSystemObject")Set fHost = fso.OpenTextFile(ScriptPath& "ip.txt", ForReading, 0) 'Do While fHost.AtEndOfStream <> Truecrt.Screen.Synchronous = TruestrLineHost = Trim(fHost.Readline ) '获取fhost文件中的一行,如192.168.0.9 null password en_pwd BASstrArray=split(strLineHost,vbtab,-1) '按tab将获取的行分割成一个数组strArray[0]=192.168.0.9 .... strArray[4]=BAS strLogfile=LogPath & strArray(hostname)& "-" & my_date() &".txt"crt.Session.LogFileName = strLogfilecrt.Session.Log Truecrt.Session.Connect "/telnet" & " " & strArray(Hostip) & vbcr 'telnet strArray[0] vbcr=回车crt.screen.waitforstring "login:"crt.screen.send my_user & vbcr 'strArray(user) & vbcrcrt.screen.waitforstring "assword:"crt.screen.send my_pass & vbcrIf strArray(NodeType)="BAS" ThenSet fCMDbsn=fso.OpenT extFile(ScriptPath& "cmd.txt", ForReading, 0) '如果是bas 打开cmd.txt文件并按forreading方式读取Do While fCMDbsn.AtEndOfStream <> True '如果没结束strLineCommand=Trim(fCMDbsn.Readline)'获取读取的行Do While strLineCommand="wait"'?不解crt.sleep 5000strLineCommand=Trim(fCMDbsn.Readline)Loopcrt.Screen.WaitforString "#"'等待出现超级权限的提示crt.Screen.Send strLineCommand & vbcr'发送命令Call CheckEnd()LoopSet fCMDbsn=nothingElseSet fCMDscs=fso.OpenT extFile(ScriptPath& "cmdscs.txt", ForReading, 0)Do While fCMDscs.AtEndOfStream <> TruestrLineCommand=Trim(fCMDscs.Readline)crt.Screen.WaitforString ">"crt.Screen.Send strLineCommand & vbcrcrt.Screen.Send "y" & vbcrLoopSet fCMDscs=nothingEnd If'Logout nodecrt.screen.waitforstring "#"'crt.Session.Log Falsecrt.screen.send " exit" & vbcr'Stop log file action'crt.screen.waitforstring "$"'crt.screen.send vbcrcrt.Session.Log False'crt.screen.send vbcrcrt.Session.Disconnectcrt.Screen.Synchronous = FalseLoopSet fso=nothingcrt.quitEnd SubSub CheckEnd()Do Until crt.Screen.WaitForString ("#" , 1)=Truecrt.Screen.Send " "Loopcrt.Screen.Send vbcrExit SubEnd Sub经常遇到需要对一批网络设备进行同一种操作的情况,比如备份,或者查找arp表等,用telnet一个个登上去看确实比较麻烦,于是想到是否有自动化的办法来做,编程序太麻烦改起来不方便,每天都在用securecrt这个软件做telnet客户端,有一次无意间在软件目录下发现一些脚本,原来securecrt也可以用脚本,于是有了下面这个脚本,用来自动登录到设备上去执行某个操作,并把屏幕内容记录到日志文件中供进一步处理。
SecureCRT配置路由器相关命令
SecureCRT配置路由器相关命令[ 2008-4-24 11:17:00 | By: yujh ]SecureCRT配置路由器主机名:主机IP用户名:root密码:密码*************显示当前非法网址*************more yellow.list 回车按空格键下翻*************插入新记录*************vi yellow.list 回车按i键,提示insert,回车即可输入或删除记录*************保存操作*************按ESC,insert消失。
此时输入 :wq! 回车*************让设置生效*************service squid restart 回车*************如果要修改密码*************passwd root 回车输入密码再次确认*************如果要删除某条记录*************vi /etc/squid/yellow.list 编辑yellow.list/filename 将光标定位到某记录dd 删除该行记录*************重建yellow.list*************rm -rf /etc/squid/yellow.list 删除yellow.list touch /etc/squid/yellow.list 新建yellow.listvi /etc/squid/yellow.list 再次编辑yellow.list附:vi命令一览表文本编辑器是所有计算机系统中最常用的一种工具。
UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,以下稍做总结,以资共享。
进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenamevi filename....filename :打开多个文件,依次进行编辑移动光标类命令h :光标左移一个字符l :光标右移一个字符space:光标右移一个字符Backspace:光标左移一个字符k或Ctrl+p:光标上移一行j或Ctrl+n :光标下移一行Enter :光标下移一行w或W :光标右移一个字至字首b或B :光标左移一个字至字首e或E :光标右移一个字至字尾) :光标移至句尾( :光标移至句首}:光标移至段落开头{:光标移至段落结尾nG:光标移至第n行首n+:光标下移n行n-:光标上移n行n$:光标移至第n行尾H :光标移至屏幕顶行M :光标移至屏幕中间行L :光标移至屏幕最后行0:(注意是数字零)光标移至当前行首$:光标移至当前行尾屏幕翻滚类命令Ctrl+u:向文件首翻半屏Ctrl+d:向文件尾翻半屏Ctrl+f:向文件尾翻一屏Ctrl+b;向文件首翻一屏nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
SecureCRT批量备份不同型号交换机说明及脚本配置
shebei.txt为设备IP地址等信息shebei.txt格式如下设备名称登录帐号登录密码超级密码IP 端口Telnet 设备型号XXX交换机123 **** **** 192.168.1.1 23 Telnet 3300在做CRT脚本的时候,不同的设备获取配置文件的命令稍微有些不通,所以这个脚本做了设备型号的判断。
(这个案例是以华为的设备为例,如果网络中存在思科或者中兴等设备可以对脚本稍作修改即可)# $language = "VBScript"# $interface = "1.0"'==========================================================================' NAME: Backup Of IP-MAN' AUTHOR: LiuBin'==========================================================================Sub MainConst DEVICE_FILE_PATH = "shebei.txt"Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")Dim filSet fil = fso.OpenTextFile(DEVICE_FILE_PATH)Dim ipDim nameDim protocolDim lineDim cnxnStringWhile Not fil.AtEndOfStreamline = fil.ReadLinename = Split(line, " ")(0)username =Split(line, " ")(1)password =Split(line, " ")(2)super =Split(line, " ")(3)ip = Split(line, " ")(4)port = Split(line, " ")(5)protocol = Split(line, " ")(6)devicetype = Split(line, " ")(7)Select Case protocolCase "Telnet"cnxnString = "/TELNET " & ip & " "& portEnd Select'Logcrt.Session.LogFileName = "E:\\easy\\备份\\"+name+" "+ip+".log"‘备份的目标地址crt.Session.Log True' Connectcrt.Screen.Synchronous = TrueOn Error Resume Nextcrt.session.Connect cnxnStringIf Err.Number<>0 Thencrt.Session.Log "Connect failed"crt.Screen.Synchronous = Falsecrt.Session.Log Falseelseif devicetype="9306" or devicetype="9303" or devicetype="8505" or devicetype="3928" or devicetype="3528" or devicetype="2300" then‘判断设备型号crt.Screen.WaitForString "Username:"crt.Screen.Send username & vbCrcrt.Screen.WaitForString "Password:"crt.Screen.Send password & vbCrcrt.Screen.WaitForString ">"crt.Screen.Send "super" & vbCrcrt.Screen.WaitForString " Password:"crt.Screen.Send super & vbCrcrt.Screen.WaitForString ">"crt.Screen.Send "dis cu" & chr(13)crt.Screen.Send " "‘这个是发送空格,就是交换机打dis cu的时候需要打空格或者回车才会显示另外一页crt.Screen.Send chr(13)crt.Screen.WaitForString ">"crt.Screen.Send "quit" & chr(13)crt.Screen.Synchronous = Falsecrt.Session.Disconnectcrt.Session.Log Falseelseif devicetype="3300" thencrt.Screen.WaitForString "Username:"crt.Screen.Send username & vbCrcrt.Screen.WaitForString "Password:"crt.Screen.Send password & vbCrcrt.Screen.WaitForString ">"crt.Screen.Send "dis cu" & chr(13)crt.Screen.Send " "crt.Screen.Send chr(13)crt.Screen.WaitForString ">"crt.Screen.Send "quit" & chr(13)crt.Session.Log falsecrt.Session.Disconnect()elseif devicetype="ME60" thencrt.Screen.WaitForString "Password:"crt.Screen.Send password & vbCrcrt.Screen.WaitForString ">"crt.Screen.Send "super" & vbCrcrt.Screen.WaitForString " Password:"crt.Screen.Send super & vbCrcrt.Screen.WaitForString ">"crt.Screen.Send "dis cu" & chr(13)crt.Screen.Send " "crt.Screen.Send chr(13)crt.Screen.WaitForString ">"crt.Screen.Send "quit" & chr(13)crt.Screen.Synchronous = Falseend ifEnd IfWendfil.CloseEnd Sub。
利用VBS批量创建SecureCRT配置文件的方法
利用VBS批量创建SecureCRT配置文件的方法黄向农;曾毅夫;暨晓晖【期刊名称】《电脑知识与技术》【年(卷),期】2013(000)025【摘要】A large campus network runs a large number of network devices, such as routers and switches. An Excel table is used to manage related information of these devices. In order to use the information in the Excel table to control the devices ,we can use VBS, based on this table, to batch-generate required configuration files for SecureCRT to login related devices, providing network administrators a convenient way in remote login.%大型园区网运行着大量路由器和交换机等网络设备,我们使用Excel表管理这些设备的相关信息。
为了能使用该Excel表中的信息来控制设备,可以基于该表利用VBS来批量地生成用于SecureCRT登录相关设备所需的配置文件,以便于网管员进行远程登录操作。
【总页数】4页(P5576-5579)【作者】黄向农;曾毅夫;暨晓晖【作者单位】中山大学网络与信息技术中心,广东广州,510275;中山大学外国语学院,广东广州,510275;中山大学外国语学院,广东广州,510275【正文语种】中文【中图分类】TP311【相关文献】1.试谈利用VBA批量导出成绩通知书的方法 [J], 江育奇2.利用Access和VBA编程实现医保变更业务中Word表格模板的批量打印 [J], 闫婷婷3.利用Excel的VBA宏功能实现减压孔板的批量计算 [J], 钱子俊4.VBA的WinCC画面对象批量创建工具在水泥生产及余热发电主系统PCS7升级改造中的应用 [J], 岳轶翔;曹建斌5.利用VB实现Grapher自动批量绘制采油曲线方法研究 [J], 赵燕因版权原因,仅展示原文概要,查看原文内容请购买。
SecureCRT登录对多台H3C设备进行配置自动备份
版权说明Copyright ©2006-2007 杭州华三通信技术有限公司及其许可者 版权所有,保留一切权利。
未经本公司书面许可,任何单位和个人不得擅自摘抄、复制本书内容的部分或全部,并不得以任何形式传播。
H3C 、、Aolynk 、、H 3Care 、、TOP G 、、IRF 、NetPilot 、Neocean 、NeoVTL 、SecPro 、SecPoint 、SecEngine 、SecPath 、Comware 、Secware 、Storware 、NQA 、VVG 、V 2G 、V n G 、PSPT 、XGbus 、N-Bus 、TiGem 、InnoVision 、HUASAN 、华三均为杭州华三通信技术有限公司的商标。
对于本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
保密承诺本次服务中获取客户的保密信息仅用于H3C 公司向客户交付涉及H3C 解决方案与产品服务(网络规划、设计、实施、运维、优化)。
未经客户同意,H3C 公司承诺对保密信息不用于其他与客户服务无关的用途,不向任何与客户服务无关的第三方披露。
Any Confidential Information acquired in service will be used by H3C for the solely purpose of providing solutions and products service (networkarchitecture, design, execute, running and maintenance, and optimization). Without the consent of customer, H3C shall not use the ConfidentialInformation in any way that is not related to Customer’s service, or disclose to any third party that is not relevant to Customer’s service.杭州华三通信技术有限公司Un Re gi st er ed使用SecureCRT 登录对多台H3C 设备进行配置自动备份版本建议:SecureCRT 版本用6.2以上版本 使用范围:该文档适用于H3C 网络设备一、 对于采用用户名-密码或用户名-密码-超级密码的情形。
使用 SecureCRT 批处理备份锐捷交换机配置脚本
使用SecureCRT 批处理备份锐捷交换机配置脚本已测试了SecureCRT 脚本批量执行备份锐捷交换机配置文件的功能。
此脚本可以根据你的需要修改,改成其他功能,希望有需要的同学扩展思路。
使用SecureCRT 批处理备份所有交换机配置的脚本,使用方法:1、在 C 盘新建一个文件夹,命名为SW_bak,打开文件夹,新建一个文本文件swlist.txt,编辑并保存这个文本文件.每行输入4 列分别是:交换机IP 用户名密码enable密码;例如:192.168.11.1 root password password192.168.12.1 root password password(有多少交换机就写多少行)2、新建一个文本文件,将下面的代码(两条分割线内的内容,不包括分割线)复制到文本文件内,保存关闭。
将文本文件重命名为:备份交换机配置批处理.vbs# $language ="VBScript"# $interface = "1.0"'本脚本示范:从一个文件里面自动读取设备IP 地址,密码等,自动将设备配置备份Sub Main'打开保存设备管理地址以及密码的文件Const ForReading = 1, ForWriting = 2, ForAppending = 8Dim fso,file1,line,str1,paramsSet fso = CreateObject("Scripting.FileSystemObject")Set file1 = fso.OpenTextFile("c:\ SW_bak\swlist.txt ",Forreading,False)crt.Screen.Synchronous = TrueDO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数交换机IP 用户名密码enable密码;params = Split (line)crt.session.LogFileName = " c:\ SW_bak\log\20120713\" & params(0) & ".txt"crt.session.Log(true)'Telnet 到这个设备上crt.Session.Connect "/TELNET " & params(0)'输入Username 密码crt.Screen.WaitForString " Username:"crt.Screen.Send params(1) & vbcr'输入telnet 密码crt.Screen.WaitForString "Password:"crt.Screen.Send params(2) & vbcr'进特权模式crt.Screen.Send "enable" & vbcrcrt.Screen.WaitForString "Password:"crt.Screen.Send params(3) & vbcrcrt.Screen.waitForString "#"'备份目前runing-config 配置str1 = "show run"crt.Screen.Send str1 & vbcrcrt.Screen.WaitForString " --More-- "crt.Screen.Send " & vbcr " '备份完成后退出crt.Screen.waitForString "!" & vbcrlf & "end"crt.Session.Disconnect loopcrt.Screen.Synchronous = False End Sub复制备份交换机配置批处理.vbs 到c:\ SW_bak\ 文件夹内;3、在c:\ SW_bak\ 文件夹中新建一个log 文件夹,用于保存配置文件。
利用SecureCRT实现交换机自动登录脚本
crt.Screen.Send (params[3] + "\r");
crt.Screen.WaitForString( ">");
crt.Screen.Send ("sys" + "\r");
}
}
}
运行效果图:
选择脚本,并执行代码即可。
输入username2即可登录完成。
注:至此已完,我是用来登录华为的交换机的,当然还可以登录中兴的9806H等等,=这样的话可以少敲键盘,也可以在此基础上进行对所有的交换机进行批量备份,批量配置等等。以后会放出。很多secureCRT脚本是用vbs写的,很多我参照并用javascript重写了。作者:鲍继川邮箱:bc5367@多谢指教
192.168.1.11 username2password2supassword2
中间是空格,以方便读取。先输入用户名比如username2后,脚本自动去查找username2,然后自动telnet 192.168.1.11这个ip地址,后自动输入username2,password2,supassword2后输入sys就完了。
crt.Screen.Send(params[1]+"\r");
crt.Screen.WaitForString( "Password:");
crt.Screen.Send(params[2] + "\r");
crt.Screen.WaitForString( ">");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用SecureCRT批处理备份所有交换机路由器配置脚本
小弟测试了SecureCRT脚本批量执行备份cisco交换机或者路由器配置文件的功能。
测试通过(成功批量备份28台交换机,时间小于1分钟)。
此脚本可以根据你的需要修改,改成其他功能,希望有需要的同学扩展思路。
使用SecureCRT批处理备份所有交换机配置的脚本,使用方法:
1、在D盘新建一个文件夹,命名为SWbackup,打开文件夹,新建一个文本文件list.txt,编辑并保存这个文本文件,每行输入3列分别是:
交换机ip密码enable密码;例如:
192.168.
1.1 cisco cisco
192.168.
1.2 cisco cisco
(有多少交换机就写多少行)
2、新建一个文本文件,将下面的代码(两条分割线内的内容,不包括分割线)复制到文本文件内,保存关闭。
将文本文件重命名为:
备份所有交换机配置批处理脚本.vbs(注意要现显示文件后缀名才能修改)
--------------------------------------------------------------------------------------------------------------------------# $language = "VBScript"
# $interface = "
1.0"
'本脚本示范:
从一个文件里面自动读取设备IP地址,密码等,自动将设备配置备份Sub Main
'打开保存设备管理地址以及密码的文件
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso,file1,line,str1,params
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile("d:
\SWbackup\list.txt",Forreading, False)
crt.Screen.Synchronous = True
DO While file
1.AtEndOfStream <> True
'读出每行
line = file
1.ReadLine
'分离每行的参数IP地址密码En密码
params = Split (line)
crt.session.LogFileName = "d:
\SWbackup\log\\" & params
(0) & ".txt"crt.session.Log(true)
crt.Session.Connect "/TELNET " & params
(0)
crt.Screen.WaitForString "Password:"crt.Screen.Send params
(1) & vbcr
'进特权模式
crt.Screen.Send "enable" & vbcr
crt.Screen.WaitForString "Password:"crt.Screen.Send params (2) & vbcr
crt.Screen.waitForString "#"
'备份目前runing-config配置
str1 = "show run"
crt.Screen.Send str1 & vbcr
crt.Screen.WaitForString " --More-- "
crt.Screen.Send"" & vbcr
'备份完成后退出
crt.Screen.waitForString "!" & vbcrlf & "end"
crt.Session.Disconnect
loop
crt.Screen.Synchronous = False
End Sub
'list.txt需要先做好。
每行3列分别是:
交换机ip密码enable密码。
例如:
192.168.
1.1 cisco,有多少交换机就写多少行
--------------------------------------------------------------------------------------------------------------------------复制备份所有交换机配置批处理脚本.vbs到D盘SWbackup文件夹内;
3、在D盘SWbackup文件夹中新建一个log文件夹,用于保存配置文件。
4、在log文件夹内新建一个以日期为名字的文件夹用于区别多个备份。
目录结构:
d:
\SWbackup\log\\
4、打开SecureCRT,点击菜单栏的脚本-执行,选择D盘SWbackup文件夹内的备份所有交换机配置批处理脚本.vbs,点执行。
脚本中的目录、文件名、命令,大家可以自己改啊,想偷懒就自己研究一下。
很简单的。
更改方法:
右键点击备份所有交换机配置批处理脚本.vbs,点编辑。