目录

一、     背景介绍…. 2

二、     准备工作…. 3

2.1、         自动日志功能… 3

2.2、         脚本录制功能… 5

三、     自动化脚本编写…. 6

3.1、         三段模式模板… 6

四、     应用案例…. 9

4.1、         真实场景:… 9

4.2、         说明… 11

 


一、   背景介绍

本文档的主要目的,旨在让大学了掌握secureCRT的使用技巧,通过这些常用技巧的使用,让大家减少不必要的工作量并能大大提高大家工作效率。

本文档适用对象为需要使用secureCRT做网络调试的工程师,其必须有用过该款软件,基础功能会使用。对于那些需要修改大量设备的配置时像远程升级等等,更应该学习本文档。

本文档中的脚本已经在实施工程中应用过,并如果有需要,可以直接拿去使用,只需修改部分参数即可使用。


二、   准备工作
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