SecureCRT自动化

转载自:http://blog.163.com/liang_0001/blog/static/82013603201172612615357/



二、   准备工作
2.1、  自动日志功能
2.1.1、            自动日志说明
开启自动日志功能后,就不要每次使用的时候手动保存日志,对于那些需要记录调试过程的工程师来说省了不少事,也相应的提高的工作效率。




2.1.2   自动日志步骤
1.      鼠标左击菜单选项Options 选择 Global Options;


2.      在General Default Session 下单击Edit Default Settings;


3.      选择Terminal里面的 Log file;


4.      通过下图大家可以很清楚看到其配置方法,具体参数可根据参数自定义。


注:参数的含义是:%S会话名称 %Y年 %M月 %D日 %h小时 %m分钟 %s秒 %H主机名称。




2.1.2、            自动日志敝端说明
自动日志一个重要作用是记录某个时刻操作了什么,因此要在On each line中加上年、月、日、时、分、秒;所以日志记录会带有时间戳如下:


[03-30-15:10:05]6506-A#show run


[03-30-15:10:05]System software version : 2.42(4) Build Jun 26 2006 Rel


但带时间戳的show run 就不能复制粘贴到secureCRT中去运行。每行都带有时间戳的话,行数太多不可能一行一行去删除,可以用下面的方法去做。


使用UltraEdit文本编辑工具,在菜单属性中有选择“列”中的“列模式”,选择第一行的时间戳,选择“列”中“删除列”,则所的有时间戳都被删除。


J          可根据自己的来定义是否需要在每一行中加时间参数。




2.2、  脚本录制功能
2.2.1、            脚本录制说明
此功能对那些需要维护设备较多且对每台设备所做的操作命令都相同的工程师非常有用,通过录制脚本,为后续自动化脚本做准备。




2.2.2、            脚本记录步骤
1.      鼠标左击菜单选项Script 选择 Start Recoding Script;


2.      调试结束后左击菜单选项Script 选择 Stop Recoding Script,并保存脚本。




三、   自动化脚本编写
3.1、  三段模式模板
从一个文件(目录为C:\Users\lilf\Desktop\ip.txt)里面自动读取设备IP地址,密码等,自动登录设备进入特权模式。


第一种情况:用户名+密码+特权密码方式


# $language = “VBScript”


# $interface = “1.0″


Sub Main


‘打开保存设备管理地址以及密码的文件


Const ForReading = 1, ForWriting = 2, ForAppending = 8


Dim fso,file1,line,params


Set fso = CreateObject(“Scripting.FileSystemObject”)


Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt”,Forreading, False)


crt.Screen.Synchronous = True


DO 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) & vbcr


crt.Screen.WaitForString “assword:”


crt.Screen.Send params(2) & vbcr


‘进特权模式


crt.Screen.Send “enable” & vbcr


‘输入特权密码


crt.Screen.WaitForString “assword:”


crt.Screen.Send params(3) & vbcr


crt.Screen.waitForString “#”


ip.txt里相对应的IP地址、用户名、密码、特权密码,分别如下:


192.168.1.1 admin ruijie ruijie


192.168.1.2 admin ruijie ruijie


192.168.2.1 admin ruijie ruijie


……


第二种情况:密码+特权密码方式


# $language = “VBScript”


# $interface = “1.0″


Sub Main


‘打开保存设备管理地址以及密码的文件


Const ForReading = 1, ForWriting = 2, ForAppending = 8


Dim fso,file1,line,params


Set fso = CreateObject(“Scripting.FileSystemObject”)


Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt”,Forreading, False)


crt.Screen.Synchronous = True


DO 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


‘进特权模式


crt.Screen.Send “enable” & vbcr


‘输入特权密码


crt.Screen.WaitForString “assword:”


crt.Screen.Send params(2) & vbcr


crt.Screen.waitForString “#”


ip.txt里相对应的IP地址、密码、特权密码,分别如下:


192.168.1.1 admin ruijie


192.168.1.2 admin ruijie


192.168.2.1 admin ruijie


……


脚本发送命令:


crt.Screen.Send”要发送的命令” & chr(13)   //这个是回车,并且每行只发送一个命令。


如下,进入全局模式下,去掉OSPF进程号800


crt.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.Disconnect


loop


crt.Screen.Synchronous = False


End Sub




四、   应用案例
4.1、  真实场景:
客户升级,客户有145台设备需要升级,其中有rgos.bin,也有少部分的rgnos.bin。


首先查找当前运行的是rgos.bin还是rgnos.bin


运行脚本,并记录日志到一个文本中,按2.1.2图即可


脚本如下:


# $language = “VBScript”


# $interface = “1.0″


Sub Main


Const ForReading = 1, ForWriting = 2, ForAppending = 8


Dim fso,file1,line,params


Set fso = CreateObject(“Scripting.FileSystemObject”)


Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)


crt.Screen.Synchronous = True


DO While file1.AtEndOfStream <> True


line = file1.ReadLine


params = Split (line)


crt.Session.Connect “/TELNET ” & params(0)


crt.Screen.WaitForString “sername:”


crt.Screen.Send params(1) & vbcr


crt.Screen.WaitForString “assword:”


crt.Screen.Send params(2) & vbcr


crt.Screen.Send “enable” & vbcr


crt.Screen.waitForString “#”


crt.Screen.Send “show ver” & vbcr


crt.Screen.WaitForString “#”


crt.Screen.Send vbcr


crt.Screen.waitForString “#”,3


crt.Session.Disconnect


loop


crt.Screen.Synchronous = False


End Sub


C:\Users\lilf\Desktop\ip.txt中的内容如下


10.243.124.1 XXXX XXXX


10.243.124.10 XXXX XXXX


完成show ver后,查看日记记录,找到当前运行的是rgnos.bin设备,并把他的IP地址从ip.txt中去掉,新建ip1.txt。


升级rgos.bin:


# $language = “VBScript”


# $interface = “1.0″


Sub Main


Const ForReading = 1, ForWriting = 2, ForAppending = 8


Dim fso,file1,line,params


Set fso = CreateObject(“Scripting.FileSystemObject”)


Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)


crt.Screen.Synchronous = True


DO While file1.AtEndOfStream <> True


line = file1.ReadLine


params = Split (line)


crt.Session.Connect “/TELNET ” & params(0)


crt.Screen.WaitForString “sername:”


crt.Screen.Send params(1) & vbcr


crt.Screen.WaitForString “assword:”


crt.Screen.Send params(2) & vbcr


crt.Screen.Send “enable” & vbcr


crt.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 vbcr


crt.Screen.waitForString “#”,3


crt.Session.Disconnect


loop


crt.Screen.Synchronous = False


End Sub


rgnos.bin的升级方法也是同样的。


在合适的时间重启:


# $language = “VBScript”


# $interface = “1.0″


Sub Main


Const ForReading = 1, ForWriting = 2, ForAppending = 8


Dim fso,file1,line,params


Set fso = CreateObject(“Scripting.FileSystemObject”)


Set file1 = fso.OpenTextFile(“C:\Users\lilf\Desktop\ip.txt “,Forreading, False)


crt.Screen.Synchronous = True


DO While file1.AtEndOfStream <> True


line = file1.ReadLine


params = Split (line)


crt.Session.Connect “/TELNET ” & params(0)


crt.Screen.WaitForString “sername:”


crt.Screen.Send params(1) & vbcr


crt.Screen.WaitForString “assword:”


crt.Screen.Send params(2) & vbcr


crt.Screen.Send “enable” & vbcr


crt.Screen.waitForString “#”


crt.Screen.Send “reload in 1″ & vbcr


crt.Screen.WaitForString “#”


crt.Screen.Send vbcr


crt.Screen.waitForString “#”,3


crt.Session.Disconnect


loop


crt.Screen.Synchronous = False


End Sub


重启过程中用批量ping工具监视,重启完成后查看是否都正常。




4.2、  说明
注意事项:如果运行过程中telnet到一台不可达的设备后,则脚本会中断,刚需要人工去再次运行,故运行之前先用批量ping工具测试设备连通性。


以上是转自http://www.gtdlife.de/securecrt%E8%87%AA%E5%8A%A8%E5%8C%96%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3.html


 


 


下面是我根据上面的文档编写的没有用户名的自动登录


# $language = "VBScript"
# $interface = "1.0"
Sub Main
'打开保存设备管理地址以及密码的文件
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso,file1,line,params
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile("C:\ip.txt",Forreading, False)
crt.Screen.Synchronous = True
DO 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" & vbcr


crt.Screen.waitForString "#"
crt.Screen.Send "show ver" & vbcr


crt.Screen.waitForString "#"
crt.Screen.Send "clear counters" & vbcr & vbcr


crt.Screen.waitForString "#" ,300


crt.Session.Disconnect
loop
crt.Screen.Synchronous = False
End Sub

# $language = "VBScript" # $interface = "1.0" '作者;小怪兽怪瘦 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:\backup\list.txt",Forreading, False) crt.window.show 3 crt.Screen.Synchronous = True do while file1.AtEndOfStream True '读取每一行 line = file1.ReadLine '分割IP,用户名,密码 特权密码 型号简写(z m h b) 位置 params = Split (line) ip = params(0) user = params(1) password = params(2) su = params(3) mode = params(4) whereis = params(5) crt.session.LogFileName = "D:\backup\log\"&ip&"_"&whereis&"_20190620.txt" '提供日志,修改后面日期即可 crt.session.Log(true) crt.Session.Connect ( "/SSH2 /L "&user&" /PASSWORD "&password&" "&ip) '建立SSH连接 if mode = "m" then 'm 代表迈普型号 crt.Screen.Send "enable" & chr(13) crt.Screen.WaitForString "assword:" crt.Screen.Send params(3) & chr(13) crt.Screen.WaitForString "#" '关闭more提示 crt.Screen.Send "more off" & chr(13) crt.Screen.WaitForString "#" '执行命令集 Set cmdfile = fso.OpenTextFile("D:\backup\cmd-mp.txt",Forreading, False) do while cmdfile.AtEndOfStream True line2 = cmdfile.ReadLine crt.Screen.Send line2 & Chr(13) crt.Screen.waitForString "#" loop crt.Screen.Send "show running-config" & chr(13) crt.Screen.WaitForString "#" '打开more提示 crt.Screen.Send "more on" & chr(13) crt.Screen.WaitForString "#" crt.Screen.Send "exit" & chr(13) crt.Screen.WaitForString ">" crt.Session.Disconnect end if if mode = "c" then 'c 代表思科型号 crt.Screen.WaitForString ">" crt.Screen.Send "enable" & chr(13) crt.Screen.WaitForString "assword:" crt.Screen.Send params(3) & chr(13) crt.Screen.WaitForString "#" '关闭more提示 crt.Screen.Send "configure terminal" & chr(13) crt.Screen.WaitForString "config)#" crt.Screen.Send "line vty 0 4" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "length 0" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "end" & chr(13) crt.Screen.WaitForString "#" '执行命令集 Set cmdfile = fso.OpenTextFile("D:\backup\cmd-cisco.txt",Forreading, False) do while cmdfile.AtEndOfStream True line2 = cmdfile.ReadLine crt.Screen.Send line2 & Chr(13) crt.Screen.waitForString "#" loop crt.Screen.Send "show running-config" & chr(13) crt.Screen.WaitForString "#" '打开more提示 crt.Screen.Send "configure terminal" & chr(13) crt.Screen.WaitForString "config)#" crt.Screen.Send "line vty 0 4" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "no length" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "end" & chr(13) crt.Screen.WaitForString "#" crt.Session.Disconnect end if if mode = "r" then 'r 代表锐捷型号 crt.Screen.WaitForString ">" crt.Screen.Send "enable" & chr(13) crt.Screen.WaitForString "assword:" crt.Screen.Send params(3) & chr(13) crt.Screen.WaitForString "#" '关闭more提示 crt.Screen.Send "configure terminal" & chr(13) crt.Screen.WaitForString "config)#" crt.Screen.Send "line vty 0 15" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "length 0" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "end" & chr(13) crt.Screen.WaitForString "#" '执行命令集 Set cmdfile = fso.OpenTextFile("D:\backup\cmd-rj.txt",Forreading, False) do while cmdfile.AtEndOfStream True line2 = cmdfile.ReadLine crt.Screen.Send line2 & Chr(13) crt.Screen.waitForString "#" loop crt.Screen.Send "show running-config" & chr(13) crt.Screen.WaitForString "#" '打开more提示 crt.Screen.Send "configure terminal" & chr(13) crt.Screen.WaitForString "config)#" crt.Screen.Send "line vty 0 15" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "no length" & chr(13) crt.Screen.WaitForString "line)#" crt.Screen.Send "end" & chr(13) crt.Screen.WaitForString "#" crt.Session.Disconnect end if if mode = "z" then 'z 代表中兴型号 crt.Screen.Send "enable" & chr(13) crt.Screen.WaitForString "assword:" crt.Screen.Send params(3) & chr(13) crt.Screen.WaitForString "#" '执行命令集 Set cmdfile = fso.OpenTextFile("D:\backup\cmd-zx.txt",Forreading, False) do while cmdfile.AtEndOfStream True line2 = cmdfile.ReadLine crt.Screen.Send line2 & Chr(13) if (crt.Screen.WaitForString (" --More--",1)False) then crt.Screen.Send " " & chr(13) else crt.Screen.Send chr(13) end if crt.Screen.waitForString "#" loop 'crt.Screen.Send "show running-config" & chr(13) 'crt.Screen.WaitForString " --More--" 'crt.Screen.WaitForString "#" crt.Session.Disconnect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值