SecureCRT工具的使用技巧和脚本的定时执行

   SecureCRT是一个很方便的远程控制linux系统的命令行工具。在SecureCRT的使用技巧中,常用的就按钮栏和录制脚本。

   在SecureCRT中您可以配置自己的按钮栏,在按钮栏上定制添加一些常用操作的按钮。这样通过一键鼠标点击就可以搞定常用输入或常用操作,例如tail查看某个文件或cd到某个目录,非常地便捷。

   SecureCRT另外一个常用的功能就是录制脚本,可以将一些更长的命令行输入,录制成为一个可以回放的VBScript小程序。例如,固定从某个ftp的目录下获取版本,然后进行无界面的升级安装。通过录制脚本的回放,也是一键就可以搞定一些复杂但是固定的常用操作,非常的便捷!

  SecureCRT录制的小程序,可以进一步经过适当的改造,就可以达到在不同机器上进行“回放”。主要就是参数化crt.Screen.WaitForString 语句、某些可以不使用waitForString的场景,使用更普适的crt.Screen.WaitForCursor、以及一些必须的延时等待,可以使用特殊形制和更表义的crt.Screen.WaitForString脚本语句。这些特殊形制的crt.Screen.WaitForString,其等待的字符串为永远不可能出现,但更表义的字符串,直至等到超时。例如:

    If crt.screen.WaitForString("waitForUpdateFinish:", 90) <> False Then

    End If

   在个人的实践中,通过对某些执行语句,辅助以>>/dev/null,避免光标频繁移动,避免使得crt.Screen.WaitForCursor的满足条件生效,大部分的crt.Screen.WaitForString都可以替换为crt.Screen.WaitForCursor,。

   那么这些常用操作,如何能够定时执行呢?不巧的是,secureCRT不提供这种功能,需要借助windows系统的任务计划程序。利用bat批处理程序,将执行语句%SecureCRT_HOME%\SecureCRT.exe /POS 0 0 /S "yourRmoteHostConfigConnectName" /SCRIPT yourRecord.vbs加入定时任务,则可以实现定时执行。

  如果仅靠录制的脚本定时执行的话,定时执行完毕后,会存在一个残留的SecureCRT程序,也很是不爽!在对于录制脚本的研究中,SecureCRT的帮助文档起到很大的作用,发现SecureCRT支持的脚本中,还可以关闭连接、进而关闭程序:

        crt.Session.Disconnect
crt.Quit 

      这两个操作比较暴力,最好是在正确的crt.Screen.WaitForString或适当地能够保证成功完成的超时时间之后才执行。

      保证录制脚本执行后关闭临时SecureCRT的实践,结合持续集成Jenkins环境,就无缝地在某些特定用途的场景下,实现版本的自动部署了。

      PS:某些同学认为利用SecureCRT命令按钮和回放脚本,可能会使得忘记一些linux shell命令。我想是这种后果有可能的,所以,建议这些操作,是在您浸淫很多次后,为了一些偷懒的目的玩玩吧:)



  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
# $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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值