(完整版)SecureCRT脚本编写方法
- 格式:doc
- 大小:109.00 KB
- 文档页数:17
1.脚本类型SecureCRT支持三种类型的自动化脚本,vbs、javascript和python,书写语法如下。
vbs# $language = "VBScript"# $interface = "1.0"Sub Main.....End SubJavascript# $language = "JScript"# $interface = "1.0"function main() {.....}python(需SecureCRT6.6以上才支持)# $language = "Python"# $interface = "1.0"def main():.....main()2. SecureCRT内置对象SecureCRT提供了内置对象与脚本交互,这些对象封装了属性与操作,可用来操纵程序行为。
其中crt是顶级对象,代表了SecureCRT进程,其属性有ActivePrinter(打印机),Dialog,Screen,Session(会话),Version,Window(窗口)这些二级对象,操作有Sleep,Quit等。
2.1 Screen,操作屏幕的输入输出要注意的是,Screen只代表客户区的可见部分,这部分的大小可以通过会话选项里的逻辑行、列数来设定。
而整个会话的输出记录是回滚区,没有对应的对象;属性:CurrentColumn,CurrentRow(当前光标所在逻辑行)因为逻辑行、列数限定了可见区的大小,所以当输出满屏时,CurrentRow 和Rows 的值其实是一样的,都是最大值,不会随着屏幕输出再改变,这种设计实在是有些egg hurt,不知能否通过设置来解决Columns,Rows(可见区中的输出行数)Synchronous(同步模式,据说为了避免某些情况下的数据丢失,建议开启)。
SecureCRT脚本-网络设备巡检脚本多窗口# $language = "VBScript"# $interface = "1.0"'支持cisco,huawei,h3c交换路由设备网络巡检,自动保存巡检信息Sub Maindim objCurrentTab(300)dim ndim paramsdim file1,fso,file_errordim type1dim path1,path2,path3'数据文件path1 = "C:\Users\Administrator\Desktop\test.txt"'导出配置文件path2 = "C:\Users\Administrator\Desktop\自动巡检\"'错误收集文件path3 = "C:\Users\Administrator\Desktop\error.txt"type1 = 0n = 1Set fso = CreateObject("Scripting.FileSystemObject") '创建文件对象Set file1 = fso.OpenTextFile(path1,1, False) '设置文件对象 1 只读模式;2 写模式;8 在文件末尾进行写操作Set file_error = fso.OpenTextFile(path3,1, true) '错误连接输出'判定文件是否存在if fso.FileExists(path1) <> true thenmsgbox "c:\test.txt 文件不存在!脚本将退出!"Exit subend if'从左到右激活每一个已经连接上的会话,并输入相关命令'第一个连接的会话DO While file1.AtEndOfStream <> True'读出每行line = file1.ReadLine'分离每行的参数 IP地址密码 En密码params = Split (line," ")set objCurrentTab(n) = crt.GetTab(n)objCurrentTab(n).session.disConnectobjCurrentTab(n).ActivateobjCurrentTab(n).Session.LogFileName = path2 & params(0) & ".txt"Call objCurrentTab(n).Session.Log(False) '关闭logCall objCurrentTab(n).Session.Log(True) '开启日志'objCurrentTab(n).Screen.Synchronous = True '开启屏幕同步On Error Resume Next '后面代码发生错误会继续执行objCurrentTab(n).session.Connect "/TELNET " & params(0) szError = Err.Description '将错误表述信息放入变量szError中On Error Goto 0 '关闭容错机制,即后面代码发生错误后会停止脚本,输出错误信息crt.sleep 2000'判断是否连接正常if objCurrentTab(n).Session.Connected thenobjCurrentTab(n).Screen.Synchronous = True '同步显示'第一次连接时的安全检测'Do' bCursorMoved = objCurrentTab(n).Screen.WaitForCursor(1) 'Loop until bCursorMoved = False' 一旦光标在一秒内停止移动,我们就认为他已经安全的连接上了远程设备'''''''''''''密码操作'''''''''思科,华为,H3C有不同点objCurrentTab(n).Screen.Send params(2) & chr(13)objCurrentTab(n).Screen.WaitForString ">"if params(1) = 1 thentype1 = 1objCurrentTab(n).Screen.Send "en" & chr(13)elsetype1 = 2objCurrentTab(n).Screen.Send "su" & chr(13)end ifobjCurrentTab(n).Screen.WaitForString "Password:"objCurrentTab(n).Screen.Send params(3) & chr(13)'''''''''''''只对非核心,路由有效果'''''''''type1 = 1 代表cisco;=2 代表h3c 或者huawei'等待1秒后执行巡检命令'crt.sleep 1000if type1 = 1 thenobjCurrentTab(n).Screen.WaitForString "#"'msgbox "思科巡检!"objCurrentTab(n).Screen.Send "show tech-support" & chr(13) 'objCurrentTab(n).Session.Disconnect() '断开连接'Call objCurrentTab(n).Session.Log(False) '关闭logelse'msgbox "其他巡检!"objCurrentTab(n).Screen.Send "dis dia" & chr(13)'N=displaycrt.sleep 5000objCurrentTab(n).Screen.WaitForString "N=display"objCurrentTab(n).Screen.Send "n" & chr(13)'objCurrentTab(n).Screen.WaitForString ">"'objCurrentTab(n).Session.Disconnect() '断开连接'Call objCurrentTab(n).Session.Log(False) '关闭logend ifelse'收集未连接上的设备信息g_szErrors = g_szErrors & vbcrlf & _"*** Error connecting to " & params(0) & ": " & szError '累计错误消息复制到变量g_szErrorsend if'crt.sleep 5000set newtab = objCurrentTab(n).Clone()n = n + 1loop'错误信息导出if g_szErrors <> "" thenfile_error.WriteLine(g_szErrors)'msgbox "以下是未连接上设备的信息:" & vbcrlf & g_szErrors set oShell = CreateObject("wscript.shell")oShell.Run path3set oShell = nothingend iffile1.Close '关闭文件file_error.CloseEnd Sub。
用过串口加网线升级主板程序的朋友们都知道,要在SecureCRT中输入很多字符命令,各个机型的命令又都不是完全相同,我们要背下来很多的字符命令,而且我们在输入的时候不能有一点错,那么有没有一种方法既简单又不用去死记硬背的方法呢?答案是肯定的,那就是利用SecureCRT软件的脚本功能,实现一次录入,以后一键操作的快捷方法。
一、用到的工具: SecreCRT.exeTftpd32.exe二:工具的配置第一步:将USB串口升级版与电脑连接起来。
此时电脑会识别串口板。
第二步:找到串口板在电脑上的串口号;“右键“我的电脑,点击“管理”选择“设备管理器”---“端口(COM和LTP)”,可以看到此时COM口为COM14,记住后卫配置要用到。
(注意:不同的机器该数字不相同,一定要确认该数值。
此处的COM14只是一个范例)1、SecreCRT.exe的配置,打开SecreCRT.exe后,新建连接,在协议里选择Serial选择Serial后的配置如下:其中的端口是连接USB工具后USB的串口端口、流控制中所有的勾都要去掉!2、网络的配置:使用一根网线将电脑和电视直接连接起来,然后配置计算机的IP地址。
本地连接中的IP地址需要重新配置,请按如下配置:(LAN为本地连接)3、FTP的配置,打开Tftpd32.exe后,点击Browse选择升级程序所在文件夹,如下图所示。
配置完后,该软件不要关闭。
(本教程以TCL MS28机芯为例)三、烧写步骤1、将串口与网线连接好机器,打开SecreCRT.exe,机器上电的同时按紧回车键,(如果电视是上电待机,需要将电视使用遥控器开机时,也要一直按着回车键不放)会出现<># 的命令行这个时候就进入到我们最关键的时候了,前面的内容有些课件已经介绍过,现在进入正题:当出现<># 的命令行后,我们点击“脚本---开始录制脚本”接着就是按照正常的方法输入各条命令设置IP地址,在串口命令中输入:Set ipaddr 10.120.29.55Set serverip 10.120.29.5Saveenv设置FLASH,在串口命令中输入:mstar auto.txt回车输入完命令以后程序自动执行抄写命令,如下图我们已经执行完所有的手动操作命令了,这时我们就可以停止录制脚本了,具体方法是点击“脚本---停止录制脚本” 如下图:点击完“停止录制脚本”时,会弹出一个“另存为”对话框,是询问我们把录制的脚本存储的位置以及名称(我个人认为不要存储在C盘以及名称最好按机芯名称存储)。
1.脚本类型SecureCRT支持三种类型的自动化脚本,vbs、javascript和python,书写语法如下。
vbs# $language = "VBScript"# $interface = "1.0"Sub Main.....End SubJavascript# $language = "JScript"# $interface = "1.0"function main() {.....}python(需SecureCRT6.6以上才支持)# $language = "Python"# $interface = "1.0"def main():.....main()2. SecureCRT内置对象SecureCRT提供了内置对象与脚本交互,这些对象封装了属性与操作,可用来操纵程序行为。
其中crt是顶级对象,代表了SecureCRT进程,其属性有ActivePrinter(打印机),Dialog,Screen,Session(会话),Version,Window(窗口)这些二级对象,操作有 Sleep,Quit等。
2.1 Screen,操作屏幕的输入输出要注意的是,Screen只代表客户区的可见部分,这部分的大小可以通过会话选项里的逻辑行、列数来设定。
而整个会话的输出记录是回滚区,没有对应的对象;属性:CurrentColumn,CurrentRow(当前光标所在逻辑行)因为逻辑行、列数限定了可见区的大小,所以当输出满屏时,CurrentRow 和 Rows 的值其实是一样的,都是最大值,不会随着屏幕输出再改变,这种设计实在是有些 egg hurt,不知能否通过设置来解决Columns,Rows(可见区中的输出行数)Synchronous(同步模式,据说为了避免某些情况下的数据丢失,建议开启)。
SecureCRT中python脚本编写SecureCRT中python脚本编写学习指南SecureCRT python引⾔在测试⽹络设备中,通常使⽤脚本对设备端进⾏配置和测试以及维护;对于PE设备的测试维护⼈员来说使⽤较多是SecureCRT⼯具;SecureCRT⽀持VB、JavaScript、Python等多种脚本语⾔,为了实现脚本在CRT中更加丰富稳定地执⾏,掌握CRT的常⽤函数是⾮常有⽤的。
接下来的时间我将对SecureCRT脚本编写的常⽤函数展开学习应⽤。
内容(1)使⽤python语⾔实现SecureCRT中的Dialog功能# $language = "Python"# $interface = "1.0"#crt.Dialog.FileOpenDialog([title,[buttonLabel,[defaultFilename,[filter]]]])#弹出⼀个对话框,⽤于选择单个⽂件;如果选择了具体⽂件则返回该⽂件的绝对路径,如果选择了弹窗的“取消”,则返回空。
filePath = crt.Dialog.FileOpenDialog("please open a file","open","a.log","(*.log)|*.log")#filePath = crt.Dialog.FileOpenDialog("","","a.log","")#crt.Dialog.MessageBox(message, [title, [icon|buttons]]) 警告、按钮类型弹出⼀个消息框,可以定义按钮,使⽤按钮和⽂本消息来实现和⽤户的简单对话;crt.Dialog.MessageBox(filePath,"",64|0)crt.Dialog.MessageBox("会话已断开","session",64|2)crt.Dialog.MessageBox("确认是否退出","session",32|1)crt.Dialog.MessageBox("确认是否退出","session",32|3)crt.Dialog.MessageBox("是否继续安装","session",32|4)crt.Dialog.MessageBox("此会话已打开","session",48|5)crt.Dialog.MessageBox("⽆法连接此窗⼝","session",16|6)#crt.Dialog.Prompt(message [, title [,default [,isPassword ]]])#弹出⼀个输⼊框,⽤户可以填写⽂字,⽐如填写⽂件名,填写路径,填写IP地址等,运⾏结果如果点击'ok',返回输⼊的字符串,否则返回""password = crt.Dialog.Prompt("password","session","admin",False)crt.Dialog.MessageBox(password,"password",64|0)password = crt.Dialog.Prompt("password","session","",True)crt.Dialog.MessageBox(password,"password",64|0)(2)使⽤python语⾔实现SecureCRT中的Screen功能# $language = "Python"# $interface = "1.0"# CurrentColumn返回当前光标的列坐标。
转帖】SecureCRT设置教程SecureCRT是最常用到的终端仿真程序,很多人都喜欢用进行一些配置和实验,在这里我只针对一些朋友常问到我的关于Cisco的Gns3与SecureCRT的配置进行讲解。
我以Secure_CRT_6.2.3版为例进行介绍。
一、安装安装相对来说比较简单,运行Secure_CRT_6.2.3,只要“下一步”即可,我们不去更改以默认安装就可以了。
二、注册对于Secure_CRT_6.2.3现在册上有很多注册机,只要去下载一个就可以了。
我这里用到的破解是器是crack.exe,把解压下来的crack.exe复制到安装文件夹下,并点击运行。
然后在打开的界面里的“name”和“company”项输入自己想要设置的字符就行,这个可以随便自己写也就是我写Rob的地方,最后点点“generate”生成序列号等项目,最后点“Patch”即可进行自己动注册。
【有些朋友反应说不可以进行自己动注册,那我在这里建议你,既然不能自动注册就不要太强求,我们把生成的项目全部复制下来,进行手动注册就行了】三、基本的设置界面介绍1、菜单1)File文件Connect... 连接,打开一个连接或者编辑已有的连接,创建新连接。
Quick Connect... 快速连接,快速连接对话框,快速连接主机的最便捷方式。
Connect in Tab... 在Tab中打开一个新的会话窗口。
Clone Session 克隆当前会话窗口。
Connect SFTP Tab 打开SFTP窗口,对于SSH 连接,此选项可用。
在此会话窗口中可使用SFTP命令传输文件。
Reconnect 重新连接Disconnect 中断当前会话窗口的连接Log Session 把当前窗口的会话记录到log文件中。
Raw Log Session 将更详细的会话记录到log文件中,包括服务器更详细的响应信息。
Trace Options 在log文件中记录协议会话信息选项。
Crt ⾃动化测试SecureCrt 脚本JS 脚本SecureCrt 脚本(⼀)顶级对象之CrtCrt 脚本的实现需要使⽤Crt 定义好的各个对象的属性和⽅法来实现,脚本函数系列将逐⼀介绍Crt 脚本中最常使⽤的对象,对这些对象以层级关系画出,本篇⾸先介绍顶级对象。
crt 的属性和⽅法。
属性是⼀个静态的对象,⽅法是具体执⾏的动作。
属性和⽅法底下还可以有⼦属性和⼦⽅法,这个其实就和⾯向对象的编程⽅式很像,有些基础的⼈应该会很快掌握。
解释在学习脚本函数前,先说说在脚本中头两⾏(必须写在头两⾏,且最好不要有空格回车之类的字符)所必须添加的标识,这两⾏标识告诉Crt 当前执⾏的脚本需要使⽤什么解释器进⾏解释。
其中language 为语⾔,现⽀持Jscript 、VBScript 、Python 、Perl,interface 为接⼝,现在都是1.0,以下为⽰例,修改对应的语⾔即可代码JS1 # $language = "JScript"2 # $interface = "1.0"python1 # $language = "Python"2 # $interface = "1.0"解释定义了⼀个Dialog(对话框),通过这个对象,可以通过调⽤该对象的⼦属性和⽅法实现对话框的相关功能。
代码JS 1 var diaObj = crt.Dialog;解释定义Screen(屏幕)对象,该对象是整个脚本中的灵魂,包含数据抓取、数据发送、等待数据等等重要功能都是有该对象的⼦属性和⽅法实现的。
代码JSvar scrObj = crt.Screen;解释该对象返回当前执⾏脚本的全名,其中包含脚本路径和脚本名,可以使⽤中⽂路径和⽂件名。
代码JSvar scrName = crt.ScriptFullName;解释定义当前会话属性,该属性有许多很实⽤的属性和⽅法可以使⽤。
securecrt script
SecureCRT是一款功能强大的远程登录软件,它可以通过脚本来自定义各种操作,提高工作效率,本文将介绍如何使用SecureCRT脚本来自动化操作。
第一步,打开SecureCRT软件,选择“Tools”-“Script Recorder”,启动脚本记录器。
在弹出的窗口中,点击“Start Recording”按钮,开始记录脚本。
第二步,进行需要自动化操作的操作,所有的操作都将被自动记录。
完成操作后,点击“Stop Recording”按钮,停止记录脚本。
第三步,编辑脚本,可以对录制完成的脚本进行修改和编辑。
打开“Tools”-“Script Editor”菜单,进入脚本编辑器,对脚本进行修改和添加。
第四步,执行脚本,选中编辑好的脚本,点击“Run”按钮,SecureCRT将自动执行脚本中的操作。
这样就可以自动化执行需要的操作了。
第五步,保存脚本,通过“File”-“Save As”命令,将编辑好的脚本保存下来,以便在以后需要的时候再次执行。
在使用SecureCRT脚本时,需要注意以下几点:
1. 确保在执行脚本操作之前,已经成功地建立SSH连接或是Telnet连接。
2. 确认脚本中的所有命令都是正确的,尤其是当执行的是敏感操作的时候。
3. 使用脚本时最好事先进行测试,以确保脚本能够顺利地执行。
4. 对于复杂的操作,可能需要编写多个脚本文件并按顺序执行。
总的来说,使用SecureCRT脚本可以帮助我们更轻松地进行远程管理操作,提高工作效率。
希望本文的介绍能够帮助到读者们。
SecureCRT中关于python脚本的介绍适⽤于SCRT8.0版本⼀般通信设备的测试⼈员使⽤ SCRT的较多,为了减轻重复劳动,常常会编写⼀些⼩脚本⽤于⾃动化测试。
以前基本都使⽤VB脚本,不过我不会⽤VB,⽽且最近在研究Python,于是就尝试⽤python写这些脚本,顺便记录⼀下。
我现在使⽤是SCRT版本是8.0的,这个软件内置了⼀个python解释器,因此即使你电脑上没有装python软件也可以使⽤python脚本。
不过他内置的是python2.7的版本,⽬前还不⽀持python3的特性,在官⽅论坛中,有⼈也问到了这个问题,不过官⽅回复暂时没有⽀持的计划。
好在SCRT脚本使⽤的python的特性在python2和python3中区别并不⼤,因此实际使⽤并没有感觉到不适。
我是直接学习的python3,没有学过python2,编写出来的脚本在使⽤中没有出现什么问题。
在SCRT的安装⽬录下有python的⽂件,⽂件名是:python27.dll和python27.zip。
⾸先介绍⼀下在编写SCRT脚本中的所⽤到的脚本对象。
SCRT共⽀持以下11种脚本对象:1. Application 对象2. Arguments 对象3. Clipboard 对象4. CommandWindow 对象5. Dialog 对象6. FileTransfer 对象7. Screen 对象8. Session 对象9. SessionConfiguration对象10. Tab 对象11. Window 对象我在实际⽤的最多的就是Dialog对象、Screen对象、Session对象这⼏个,因此这⼏种对象会重点写⼀下。
因为是⽤的python,因此只写关于python部分的内容,VB部分的不做介绍。
每种对象⽤⼀篇博⽂来记录。
关于每种对象的介绍均参考⾃软件⾃带的帮助⽂件,该⽂件可以通过软件界⾯的help——help topic按钮来找到,是纯英⽂的,多亏了⾕歌翻译。
常用语句:1.CRT命令‘发送命令crt.Screen.Send “whyy@dsl-vty” & chr(13)‘等待字符串出现crt.Screen.WaitForString “Password:”‘等待字符串出现,等待1秒钟crt.Screen.WaitForString (“Password:”,1)‘开启同步crt.Screen.Synchronous = True‘判断指针1秒内不移动,用于确定安全连接可以进行后续代码输入操作DobCursorMoved = crt.Screen.WaitForCursor(1)Loop until bCursorMoved = False‘判定是否已经连接到设备if crt.Session.Connected = true then‘断开连接crt.session.disConnect‘激活窗口用于多tab页面crt.Activate‘连接到指定设备crt.session.Connect(“/telnet ” & b(n))‘延时1秒crt.Sleep 10002.vbScript语句a.文件操作Set fso = CreateObject(“Scripting.FileSystemObject”) ‘创建文件对象Set file1 = fso.OpenTextFile(“c:\test.txt”,1, False) ‘设置文件对象1 只读模式;2 写模式;8 在文件末尾进行写操作objFso.FileExists(“文件路径”) ‘判定文件是否存在,存在返回trus,否则返回falsefile1.AtEndOfStream <> True ‘如果文件末尾无数据返回true,否则返回falseline = file1.ReadLine ‘读取第一行文本数据,并将读取位移动到下一行params = Split (line) ‘分割读取的行数据,用空格符分割file1.Close ‘关闭文件b.系统文档操作‘创建shell对象,对系统特殊文档操作Set objShell = CreateObject(“WScript.Shell”)‘返回”我的文档”的路径给变量szMyDocs,可以动态的返回”我的文档”的路径szMyDocs = objShell.SpecialFolders(“MyDocuments”)‘设置文件路径到变量中szSessionsFile = szMyDocs & “\SessionList.txt”3.知识点(1)判断文件是否存在if Not objFso.FileExists(szSessionsFile) then ‘如果txt文件不存在,就报错并退出subcrt.Dialog.MessageBox “Session list file not found:” & vbcrlf & vbcrlf & szSessionsFile & vbcrlf & vbcrlf & “Create a s ession list file as describ ed in the description of ” & “this script code and then run the script again.”exit subend if(2)容错机制On Error Resume Next ‘后面代码错误会继续执行crt.Session.Connect “/telnet ” & vSe ssionsArray(0)szError = Err.Description ‘将错误表述信息放入变量szError中On Error Goto 0 ‘关闭容错机制(3)判断是否安全连接‘判断是否连接正常if crt.Session.Connected thencrt.Screen.Synchronous = True ‘同步显示‘第一次连接时的安全检测DobCursorMoved = crt.Screen.WaitForCursor(1)Loop until bCursorMoved = False’ 一旦光标在一秒内停止移动,我们就认为他已经安全的连接上了远程设备end if(4)安全关闭连接’ 断开连接crt.session.disconnect’ 等待连接关闭Docrt.Sleep 100Loop While crt.Session.Connected = True ‘每100毫秒判断连接是否断开(5)说明:1.CRT默认tab的index为12.要创建第二个标签页tab,必须使用函数set newtab = objCurrentTab1.Clone()复制标签页为新的tab页面否则报错tab 2 超出index范围rang函数:Set objCurrentTab1 = crt.GetTab(1) ‘创建标签页1objCurrentTab1.session.disConnect ‘断开标签页1的当前连接objCurrentTab1.Activate ‘激活标签页1objCurrentTab1.session.Connect(“/telnet 172.16.205.1” ) ‘标签页1连接设备172.16.205.1set newtab = objCurrentTab1.Clone() ‘复制标签页1到新标签页示例:【示例一】$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 tftp://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密码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 tftp://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 Sub【示例三】批量添加静态arp:Sub MainConst ForReading = 1Dim fso,file,lineset fso = CreateObject("Scripting.FileSystemObject")set file = fso.OpenTextFile("arp.txt",ForReading,False)crt.Screen.Synchronous = TrueDO While file.AtEndOfStream <> Trueline = file.ReadLinecrt.Screen.Send line & vbcrcrt.Sleep 100loopcrt.Screen.Synchronous = FalseEnd Subarp.txt如下:arp static ip 12.1.1.025 mac 00:24:93:01:73:18interface ethernet 0/0/1 arp static ip 12.1.1.026 mac 00:24:93:01:73:19interface ethernet 0/0/1 arp static ip 12.1.1.027 mac 00:24:93:01:73:1a interface ethernet 0/0/1 arp static ip 12.1.1.028 mac 00:24:93:01:73:1b interface ethernet 0/0/1 arp static ip 12.1.1.029 mac 00:24:93:01:73:1c interface ethernet 0/0/1 arp static ip 12.1.1.030 mac 00:24:93:01:73:1d interface ethernet 0/0/1 arp static ip 12.1.1.031 mac 00:24:93:01:73:1e interface ethernet 0/0/1 arp static ip 12.1.1.032 mac 00:24:93:01:73:1f interface ethernet 0/0/1 arp static ip 12.1.1.033 mac 00:24:93:01:73:20interface ethernet 0/0/1 arp static ip 12.1.1.034 mac 00:24:93:01:73:21interface ethernet 0/0/1。
SecureCRT脚本(VBS)运⾏SecureCRT脚本(VBS)运⾏在SecureCRT运⾏脚本,⾃动收发数据监控记录运⾏状态。
参考:⽰例代码:#$language = "VBScript"#$interface = "1.0"'====本脚本说明:================================================='通信测试:'1、新建⽇志⽂件路径修改LOG_FILE_NAME宏定义的地址'2、使⽤Telnet登陆PPC后运⾏脚本,运⾏⼀段时间后错误信息将⾃动存储到1中定义的⽂本⽂件,若⽆则测试通过。
'const LOG_FILE_NAME="z:\secureCrt-log.txt"'================================================================Sub Main'================================================================crt.Screen.Synchronous = True'--------------------------------Dim erro_cerro_c = 1'----------------------------------------------------------------------------------1'loop'crt.Screen.Synchronous = False'crt.Sleep 1000crt.Screen.Send "d 0xfa050100" & chr(13)crt.Sleep 100crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.waitForString "fa050100: 0000 0002 0002 28b0 0000 ffff"crt.Screen.waitForString "value = 21 = 0x15"crt.Sleep 100'----------------------------------------------------------------------------------2'Do'INTIcrt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0049" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "004E" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0054" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0049" & chr(13)crt.Screen.Send "q" & chr(13)Read1RunRecd'Loop'-------------------------------------------Dim var1'定义循环次数var1=5Const Delay1 = 10Do'----------------------------------------------------------------------------------3'53410000crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0053" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0041" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0080" & chr(13)erro_c = Read2(erro_c )crt.Sleep Delay1'53410000crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0053" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0041" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0070" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0000" & chr(13)crt.Screen.Send "q" & chr(13)erro_c = Read2(erro_c )crt.Sleep Delay1'53410000crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0053" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0041" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0060" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0000" & chr(13)crt.Screen.Send "q" & chr(13)erro_c = Read2(erro_c )crt.Sleep Delay1'53410000crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0053" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0041" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0050" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0000" & chr(13)crt.Screen.Send "q" & chr(13)erro_c = Read2(erro_c )crt.Sleep Delay1'53410000crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0053" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0041" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13) crt.Screen.Send "0040" & chr(13)erro_c = Read2(erro_c )crt.Sleep Delay1'53410000crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0053" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0041" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0030" & chr(13)crt.Screen.Send "q" & chr(13)crt.Screen.Send "m 0xfa05010a" & chr(13)crt.Screen.Send "0000" & chr(13)crt.Screen.Send "q" & chr(13)crt.Sleep Delay1erro_c = Read2(erro_c )crt.Sleep Delay1'--------------------------------------------if var1=1 thenexit doend if'var1=var1-1Loop'crt.Screen.Send "d 0xfa050100" & chr(13)'crt.Sleep 1000crt.Screen.Synchronous = FalseEnd Sub'===================================== Sub Read1crt.Sleep 100crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.waitForString "0049"crt.Screen.waitForString "value = 21 = 0x15"crt.Sleep 500crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.waitForString "004b"crt.Screen.waitForString "value = 21 = 0x15"crt.Sleep 500crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.waitForString "004b"crt.Screen.waitForString "value = 21 = 0x15"crt.Sleep 500End Sub'===================================== Function Read2(e_cnt)Const Delay2 = 100crt.Sleep 300crt.Screen.Send "d 0xfa050100" & chr(13)'crt.Screen.waitForString "0053"If(crt.Screen.WaitForString ("0053",1)<>False) Then 'Msgbox "time yes"crt.Screen.waitForString "value = 21 = 0x15" ElseErroRecd e_cnte_cnt = e_cnt + 1crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.Send "d 0xfa050100" & chr(13)Read2 = e_cntexit function'Msgbox "time out"End Ifcrt.Sleep Delay2crt.Screen.Send "d 0xfa050100" & chr(13)'crt.Screen.waitForString "004b"'crt.Screen.waitForString "value = 21 = 0x15"If(crt.Screen.WaitForString ("004b",1)<>False) Then'Msgbox "time yes"crt.Screen.waitForString "value = 21 = 0x15"ElseErroRecd e_cnte_cnt = e_cnt + 1crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.Send "d 0xfa050100" & chr(13)Read2 = e_cntexit function'Msgbox "time out"End Ifcrt.Sleep Delay2crt.Screen.Send "d 0xfa050100" & chr(13)'crt.Screen.waitForString "004b"'crt.Screen.waitForString "value = 21 = 0x15"If(crt.Screen.WaitForString ("004b",1)<>False) Then'Msgbox "time yes"crt.Screen.waitForString "value = 21 = 0x15"ElseErroRecd e_cnte_cnt = e_cnt + 1crt.Screen.Send "d 0xfa050100" & chr(13)crt.Screen.Send "d 0xfa050100" & chr(13)Read2 = e_cntexit function'Msgbox "time out"End Ifcrt.Sleep Delay2Read2 = e_cntEnd Function'=====================================Sub ErroRecd(e_cnt)'创建⽂件对象Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")'设置⽂件对象 1 只读模式;2 写模式;8 在⽂件末尾进⾏写操作Set file1 = fso.OpenTextFile(LOG_FILE_NAME,8, False)'file1.WriteLine("Erro"&e_cnt&":"&time)file1.WriteLine("Erro"&e_cnt&":"&date&" | "&time)'---------------------file1.WriteLine("---------st-----------")dim sdim cc=1dos = crt.Screen.Get(c,1,c,100)file1.WriteLine(s)if c=50 thenexit doend ifc=c+1loopfile1.WriteLine("---------end-----------")file1.WriteLine(" ")'---------------------------------------file1.Close '关闭⽂件'Msgbox timeEnd Sub'=======================================Sub RunRecd'创建⽂件对象Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")'设置⽂件对象 1 只读模式;2 写模式;8 在⽂件末尾进⾏写操作Set file1 = fso.OpenTextFile(LOG_FILE_NAME,8, False)'file1.WriteLine("Erro"&e_cnt&":"&time)file1.WriteLine("|=======================================") file1.WriteLine("The vbs started@"&":"&date&" | "&time)'---------------------file1.WriteLine(" ")'---------------------------------------file1.Close '关闭⽂件'Msgbox timeEnd Sub操作步骤:1. 建⽴通信连接2. 运⾏脚本。
SecureCRT详细使⽤过程(整理版)SecureCRT的使⽤⽅法和技巧(详细使⽤教程)最近分了新任务做⼿机游戏的服务端,⽤到Linux系统,但是要控制服务器端的⼀些程序和监控要⽤到 SecureCRT这个软件,先前⼀点没接触过,其实跟windows的窗⼝差不多都是命令.SecureCRT是最常⽤的终端仿真程序,简单的说就是Windows下登录UNIX或Liunx 服务器主机的软件,本⽂主要介绍SecureCRT的使⽤⽅法和技巧。
VanDyke CRT 和VanDyke SecureCRT是最常⽤的终端仿真程序,简单的说就是Windows下登录UNIX或Liunx服务器主机的软件。
⼆者不同的是SecureCRT⽀持SSH (SSH1和SSH2)。
【概念解释】什么是SSH?SSH的英⽂全称是Secure Shell传统的⽹络服务程序,如:ftp和telnet在本质上都是不安全的,因为它们在⽹络上⽤明⽂传送⼝令和数据,别有⽤⼼的⼈⾮常容易就可以截获这些⼝令和数据。
⽽通过使⽤SSH 客户端与服务器端通讯时,⽤户名及⼝令均进⾏了加密,有效防⽌了对⼝令的窃听。
同时通过SSH的数据传输是经过压缩的,所以可以提⾼数据的传输速度,既然如此我们为什么不使⽤它呢。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。
⾄于具体如何安装服务器端,普通⽤户就不需要关⼼了。
⼀、安装⾸先要下载SecureCRT,⽬前最新的版本为6.1.3 (截⽌到2008年2⽉,其破解版本TBE或AGAiN),我们以5.53版为例进⾏介绍,下载安装⽂件scrt553.exe和破解⽂件keygen.exe。
安装过程很简单,运⾏scrt553.exe,只要“下⼀步”即可,安装过程中可以看到SecureCRT⽀持以下协议:SecureCRT使⽤说明- 脚本之家安装完成后,第⼀次启动SecureCRT会有如下提⽰:SecureCRT使⽤说明- 脚本之家⽤户需要指定⼀个⽬录,⽤来存放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 文件夹,用于保存配置文件。
(完整word)securecrt使用教程、SecureCRT配置详细图文教程编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word)securecrt使用教程、SecureCRT配置详细图文教程)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word)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脚本批量执行备份cisco交换机或者路由器配置文件的功能。
测试通过(成功批量备份28 台交换机,时间小于 1 分钟)。
此脚本可以根据你的需要修改,改成其他功能,希望有需要的同学扩展思路。
使用SecureCRT比处理备份所有交换机配置的脚本,使用方法:1、在D盘新建一个文件夹,命名为SWbackup打开文件夹,新建一个文本文件list.txt,编辑并保存这个文本文件,每行输入3列分别是:交换机ip 密码enable 密码;例如:192.168.1.1cisco cisco192.168.1.2cisco 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 = True DO 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) & 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.Disconnectloopcrt.Screen.Synchronous = FalseEnd Sub'list.txt 需要先做好。
SecureCRT配置调⽤JS脚本1.在状态栏了调出button barvi JumpProbe_ssh.js# $language = "JScript"# $interface = "1.0"// Connect using a pre-defined session.function main() {var crt_promp,devicename,prompt_back;var resid = crt.Dialog.Prompt("请输⼊设备ID: ", "DeviceID", "", 0);if(resid == "" || undefined == resid) {crt.Dialog.MessageBox("请输⼊正确设备ID!");return ;}//读取设备所在采集机并跳转JumpProber(resid);//读取var res_info = new Object;var ret = GetResInfo(resid, res_info);if(ret < 0) {crt.Dialog.MessageBox("获取资源信息失败,⽆法登陆资源!");return;}}function JumpProber(resid){var crt_promp = GetPrompt();var grep_cmd = "grep "+resid+" /slview/nms/cfgall/devgrp.PRS*";crt.Screen.send(grep_cmd);crt.Screen.sendkeys("{ENTER}");var result;if(result = crt.Screen.ReadString(crt_promp,30)) {result = result.replace(/grep.*[\n|\r]+/,"");result = result.replace(/^\s*/,"");var array = result.split(" ");if(array.length <= 2 || undefined == array[1] || "" == array[1] || !array[1].match(/PRS\w+/)){ return;}var grep_cmd = "grep "+array[1]+" /slview/nms/cfg/probe.ini";crt.Screen.send(grep_cmd);crt.Screen.sendkeys("{ENTER}");if(result = crt.Screen.ReadString(crt_promp,30)) {result = result.replace(/grep.*[\n|\r]+/,"");result = result.replace(/^\s*/,"");array = result.split(" ");if(array.length >= 2 && undefined != array[1] && array[1] != "" &&array[1].match(/^\d+\.\d+\.\d+\.\d+/) && array[1] != "127.0.0.1") {var ssh_cmd = "ssh "+array[1];crt.Screen.send(ssh_cmd);crt.Screen.sendkeys("{ENTER}");RETRY:for (var i=1;i<=3;i++) {while(result = crt.Screen.WaitForStrings("(yes/no)?","assword:",">","#","$",5)) { if(result == 1) {crt.Screen.send("yes");crt.Screen.sendkeys("{ENTER}");continue;}else if(result == 2) {var passwd_host = crt.Dialog.Prompt("请采集机"+array[1]+"密码: ", "", "", 0); if(passwd_host == undefined) {crt.Screen.send("slview");}else{crt.Screen.send(passwd_host);}crt.Screen.sendkeys("{ENTER}");continue;}else if(result > 2){break;}else{continue RETRY;}}}//重试3次}}}return 0;}function GetResInfo(resid, res_info){var crt_promp = GetPrompt();var grep_cmd = "grep "+resid+" /slview/nms/cfg/devcol* /slview/nms/cfgall/devcol*";crt.Screen.send(grep_cmd);crt.Screen.sendkeys("{ENTER}");var result;if(result = crt.Screen.ReadString(crt_promp,30)) {//crt.Dialog.MessageBox(result);var array = result.split(";;");res_info["LoopAddress"] = array[1];res_info["Username"] = array[4];res_info["Password"] = array[5];//密码加密?if(res_info["Password"].match(/^\w{9,}/)) {var cmd = "/slview/nms/bin/DESConvertTest.pl "+res_info["Password"];crt.Screen.send(cmd);crt.Screen.sendkeys("{ENTER}");result = crt.Screen.ReadString(crt_promp,5);result = result.replace(/^.*[\n|\r]*/,"");result = result.replace(/^\s*/,"");var array = result.split(/\s/);res_info["Password"] = array[0];}}if(undefined == res_info["LoopAddress"]) {return -1;}return 0;}function LogoutDev(crt_promp,prompt_back, devicename){var quit_cmds = ["quit","exit","logout"];if(devicename != "") {prompt_back = prompt_back + devicename;}var cmd_index = 0;crt.Screen.send(quit_cmds[0]);crt.Screen.sendkeys("{ENTER}");while( (++cmd_index < quit_cmds.length)) {var ret = crt.Screen.WaitForStrings(crt_promp,prompt_back,5);if(ret == 2) {crt.Screen.send(quit_cmds[cmd_index]);crt.Screen.sendkeys("{ENTER}");}else{return;}}}function LoginDev(res_info){var host = res_info["LoopAddress"];var user = res_info["Username"];var passwd = res_info["Password"];//获取终端等待提⽰符var crt_promp = GetPrompt();var cmd = "telnet "+host;crt.Screen.Send(cmd);crt.Screen.sendkeys("{ENTER}");var getname_prompt = "";RETRY:for (var i=1;i<=3;i++) {var result = 0;while(result = crt.Screen.WaitForStrings("sername:","ogin:","assword:",">","#","$",5)) {//crt.Dialog.MessageBox(result);//发现有错误则重新等待特殊提⽰符var result_err = crt.Screen.WaitForStrings("Tacacs server reject","Error:",1); if(result_err >= 1) {continue;}//crt.Dialog.MessageBox("sleep....");if(result == 1 || result == 2) {//crt.Dialog.MessageBox("wait 'sername:',now send '"+user+"'");crt.Screen.Send(user);crt.Screen.sendkeys("{ENTER}");continue;}else if(result == 3) {//crt.Dialog.MessageBox("wait 'assword:',now send '"+passwd+"'");crt.Screen.Send(passwd);crt.Screen.sendkeys("{ENTER}");continue;}else if(result == 4) {getname_prompt = ">";break RETRY;}else if(result == 5) {getname_prompt = "#";break RETRY;}else if(result == 6) {getname_prompt = "$";break RETRY;}else{continue RETRY;}}}devicename = GetDevName(getname_prompt);return [crt_promp,devicename,getname_prompt];}function GetPrompt(){var getname_prompt = "";crt.Screen.sendkeys("{ENTER}");if(result = crt.Screen.WaitForStrings(">","#","\n$","$",5)) {if(result == 1) {getname_prompt = ">";}else if(result == 2) {getname_prompt = "#";}else if(result == 3) {getname_prompt = "\n$";}else if(result == 4) {getname_prompt = "$";}else{crt.Dialog.MessageBox("为⾃动获取到提⽰符,使⽤默认:'>'");getname_prompt = ">";}}return getname_prompt;}function GetDevName(getname_prompt){//登陆成功获取设备名称var devicename ;if(getname_prompt == "" || undefined == getname_prompt) {getname_prompt = GetPrompt();}var prompt_front = ["<","@","\n"];crt.Screen.sendkeys("{ENTER}");if(crt.Screen.ReadString("<","@","\n", 5) && (devicename =crt.Screen.ReadString(getname_prompt, 5)) ) {if(ret = devicename.match(/\n/)) {var array_tmp = devicename.split(/<|@|\n|\s/);devicename = array_tmp[array_tmp.length - 1];}//crt.Dialog.MessageBox("devicename:"+devicename);//while(crt.Screen.ReadString(getname_prompt, 1)){}}else{//crt.Dialog.MessageBox("获取设备名称失败,⽂件名称使⽤临时⽂件:tmp.txt!"); devicename = "";}return devicename;}function GetCmdRetbyCmd(cmd, prompt_back, prompt_more, timeout){var crt_version = crt.version;var result = "";crt.Screen.Send(cmd);crt.Screen.sendkeys("{ENTER}");while(result += crt.Screen.ReadString(prompt_back,prompt_more,timeout)) {if(result.indexOf(prompt_more) >= 0){crt.Screen.Send(" ");}else{result += prompt_back;//crt.Dialog.MessageBox(result);break;}}return result;}。
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,ArrreOfRiskComm ands
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邻居状态检查
'路由信息检查
NE40EAggreOfCommands=Array("displayhealth",_ "displaytrapbuffer",_ "displaylogbuffer",_
"displaydevice",_
"displaycpu-usage",_
"displaymemory-usage",_ "displayinterface",_
"disospfpeer",_
"displayiprouting-table")
'爱立信SE800设备命令集合
'单板注册信息
'办卡加电自检
'单板运行状态检查
'检查背板运行状态
'检查主控板冗余性
'存储设备利用率
'CPU利用率
'内存利用率检查
'端口运行状态检查
'端口数据收发状态检查
'电源使用情况检查。