将脚本与SecCRT结合起来可以实现SecCRT输入、输出、字符处理的完全自动化。对于少量的命令,可以直接通过SecCRT提供的快捷键设置方式完成。而对于复杂的命令,则可以自己编写代码来实现。将原本两三天的测试工作量压缩到半天也是可能的。

下面的VB脚本例子是使用SecCRT API实现自动登录、进入前台单板各进程,获取进程号,输入各相关命令,同时可以保存日志的操作。依靠快捷键是无法完成这样工作的。它与具体的前台操作模型是精密关联的,往往需要根据前台终端命令操作方式进行编写。

SecCRT一般支持VB和JavaScript两种解释语言,在SecCRT的帮助文件中有详细描述,并且SecCRT也提供了多个例子供大家学习。

# $language = "VBScript"
# $interface = "1.0"'--------------------------------------------------------
'          Automatic VBS for Security CRT
'          Author: Raymond
'          2011.1.5.
'--------------------------------------------------------'--------------------------------------------------------
'                  Config The Followings:
'--------------------------------------------------------
'File Log
Const logFile = "c:\scrt_logfile.txt"Dim IPs         'Board IP
IPs = Array("128.131.17.167")'Cmd 1
Dim shObj1
Set shObj1 = New shClass
shObj1.shName = "SBCJ_PS_MP"
shObj1.shCmd = Array("mmeEMMClearStatistic{(}{)}","mmeESMDebugClearStatistic{(}{)}")'Cmd 2
Dim shObj2
Set shObj2 = New shClass
shObj2.shName = "EPU"
shObj2.shCmd = Array("stt_clear_sctp{(}{)}","stt_clear_sctplink{(}{)}")'All Cmds
Dim shObjs
shObjs = Array(shObj1)'--------------------------------------------------------
'                      Config End
'--------------------------------------------------------
Dim g_fso
Set g_fso = CreateObject("Scripting.FileSystemObject")
Const ForAppending = 8'---------------------------------------------------
'Sh CMD Class
'---------------------------------------------------
Class shClassPublic shName   'sh Name, StringPublic shCmd    'Cmd String Array in this shPrivate Sub Class_InitializeEnd SubPrivate Sub Class_Terminate ' 设置 Terminate 事件.End Sub
End Class'---------------------------------------------------
'Compare the patrn in this String
'---------------------------------------------------
Function RegExpTest(patrn, strng)Dim regEx, Match, Matches   ' 建立变量。Set regEx = New RegExp   ' 建立正则表达式。regEx.Pattern = patrn       ' 设置模式。regEx.IgnoreCase = True   ' 设置是否区分大小写。regEx.Global = True    ' 设置全局替换。Set Matches = regEx.Execute(strng)  ' 执行搜索。isFind = 0For Each Match in Matches   ' 遍历 Matches 集合。RegExpTest = 1Exit FunctionNextRegExpTest = 0
End Function'---------------------------------------------------
'Get Sh No. List
'---------------------------------------------------
Function GetShNum(inStr, strName)Dim strArray,strList,strItem,iReDim rtn(8)strArray = Split(inStr, vbcrlf, -1, 1)i=0For Each strList In strArraystrItem = Split(strList, " ", -1, 1)If Ubound(strItem) > 5 ThenIf RegExpTest(strName,strList) = 1 Thenrtn(i)=strItem(0)i=i+1End IfEnd IfNextReDim Preserve rtn(i)GetShNum = rtn
End FunctionDim Session,proStr
'---------------------------------------------------
'Stata One Tab
'---------------------------------------------------
Function StatTab(Ipaddr)Dim StrSet tab = crt.session.ConnectInTab("/telnet " & Ipaddr & " 10000",True)If Err.Number <> 0 ThenWriteToFile "Error: Open Tab " & Ipaddr & " Failed !"tab.CloseExit FunctionElsetab.Caption=IpaddrEnd If'Get Screen, loginSet Screen = tab.Screen'    If Screen.WaitForString("login:", 10) <> True Then
'        WriteToFile "Failed to detect login : " & Ipaddr
'        Exit Function
'    End Ifcrt.Sleep 50Screen.sendkeys("zte{ENTER}")'    If Screen.WaitForString("password:", 10) <> True Then
'        WriteToFile "Failed to detect password : " & Ipaddr
'        Exit Function
'    End Ifcrt.Sleep 50Screen.sendkeys("zte{ENTER}")WriteToFile "Log: telnet " & Ipaddr & " Successed !"If Screen.WaitForString("ushell!", 1000) <> True ThenWriteToFile "Failed to detect ushell : " & IpaddrExit FunctionEnd IfScreen.sendkeys("{ENTER}")crt.Sleep 50proStr=""While Len(proStr) < 10                          '没有取到内容,继续....Screen.sendkeys("show{ENTER}{ENTER}")proStr = Screen.ReadString("[admin]#",10)    '保留到该函数结束WendWriteToFile "Get All Proc List"WriteToFile proStr'对所有配置的命令,查找相应的进程号,并执行Dim tmpObj,shItem,shList,cmdItemFor each tmpObj in shObjsshList = GetShNum(proStr,tmpObj.shName)'WriteToFile "Bound is " & UBound(shList)For Each shItem In shListIf Len(shItem) <> 0 Then'进入该进程Screen.sendkeys("sh "& shItem & "{ENTER}{ENTER}")If Screen.WaitForString("Now switch to", 1000) <> True ThenWriteToFile "Failed to switch to ushell " & shItem & " in " & IpaddrElseWriteToFile "Switch to shell " & shItem & " in " & Ipaddr'循环执行命令For Each cmdItem in tmpObj.shCmdScreen.sendkeys(Trim(cmdItem) & "{ENTER}{ENTER}")If Screen.WaitForString("value", 1000) <> True ThenWriteToFile "Failed to Exec Cmd " & cmdItem & " in " & IpaddrElseWriteToFile "Succeed to Exec Cmd " & cmdItem & " in " & IpaddrEnd Ifcrt.Sleep 200NextEnd IfScreen.sendkeys("admin{ENTER}{ENTER}")  '退出到最外层If Screen.WaitForString("Reset to [admin]", 1000) <> True ThenWriteToFile "Failed to switch to Admin " & " in " & IpaddrExit FunctionEnd Ifcrt.Sleep 200End IfNextNextScreen.sendkeys("{ENTER}{ENTER}")  'GoodbyeWriteToFile "Finished " & Ipaddr
End Function'---------------------------------------------------
'State All Tabs, each IP every tab
'---------------------------------------------------
Sub StatAllTabsDim ipFor Each ip in IPsStatTab(ip)crt.Sleep 1000Next
End Sub'---------------------------------------------------
'Log File Open
'---------------------------------------------------
Const bUnicode = False
Dim objFile
Function OpenFile(szFile)Set bjFile = g_fso.OpenTextFile(szFile, ForAppending, True, bUnicode)
End Function'---------------------------------------------------
'Log File Close
'---------------------------------------------------
Function CloseFile()objFile.Close
End Function'---------------------------------------------------
'Write to File
'---------------------------------------------------
Function WriteToFile(szData)WriteToFile = FalseobjFile.Write szDataobjFile.Write vbcrlfWriteToFile = True
End Function'Main
Sub MainOpenFile(logFile)StatAllTabsCloseFile
End Sub

自动化脚本之SCRT相关推荐

  1. python自动化办公脚本下载-python自动化脚本

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 运维自动化,已经成为运维必不可少的一部分,下面附上自己写的监控nginx_stat ...

  2. python_selenium之第一个自动化脚本

    python_selenium之第一个自动化脚本 上一节介绍了xpath的使用,接下来完成第一个自动化脚本 一.步骤: 1. 这里使用火狐浏览器,首先打开火狐浏览器 2. 使浏览器窗口最大化 3.输入 ...

  3. lua自动化脚本关于文本读写和特殊不可见字符转换的处理

    lua自动化脚本关于文本读写和特殊不可见字符转换的处理 因为lua在读写文本中可能还会碰到一些比较变态的不可见字符,%s," "这些转换不了,所以需要做特殊的处理. 参考菜鸟教程的 ...

  4. 2.4 编写第一个自动化脚本

    编写一个简单的自动化脚本 1 #coding=utf-8 2 from Selenium import webdriver 3 driver = webdriver.Firefox() 4 drive ...

  5. Jenkins构建自动化脚本执行无界面解决方法

    场景: jenkins构建selenium自动化用例的时候,会有jenkins自带服务后台运行自动化脚本,可无界面运行IE.Chrome.Firefox. 然而运行IE浏览器时候(IE比较特殊),Je ...

  6. unittest+discover批量处理自动化脚本

    自动化的目的就是批量执行脚本代替手动测试的繁重劳动,单个脚本的执行较为容易,但是事实上自动化脚本时很多的,因此需要批量执行,这个时候需要用到unittest模块里的discover方法进行多个自动化脚 ...

  7. 什么是python自动化脚本_Python自动化

    龙源期刊网 http://www.qikan.com.cn Python 自动化 作者:张焱 来源:<电子技术与软件工程> 2017 年第 22 期 随着人工智能的发展,机器代替人工,已经 ...

  8. crt脚本怎么添加等待时间_secureCRT自动化脚本(之定时任务)

    有时候需要每天定时拉取服务器上的日志文件到跳板机,而又苦于没有权限操作crontab命令,怎么办呢??? 一些windows远程登录软件(Putty,cygwin,secureCRT--)可以帮忙哦~ ...

  9. 【Python】5个方便好用的Python自动化脚本

    相比大家都听过自动化生产线.自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率. 编程世界里有各种各样的自动化脚本,来完成不同的任务. 尤其Python非常适合编 ...

最新文章

  1. feign调用多个服务_Spring Cloud多个微服务之间调用代码实例
  2. TiDB 官方设计文档翻译(三)
  3. 可缺省的CSS布局——张鑫旭
  4. 只能是做的HTML5审批流项目
  5. 没有代码天赋的我,先退出了
  6. 精益画布_这6本书让你成为精益高手
  7. cuda11.0 cudnn 11.0 torch1.7.1+cu110 torchvision 0.8.2+cu110 安装包
  8. Linux启动服务详解
  9. 巨坑:从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
  10. 国内pip源提示“not a trusted or secure host”解决方案
  11. 层次分析法(AHP)详解+完整代码
  12. C语言,最新猴子摘桃(递归方法)
  13. linux 查看dhcp dns,RHEL6 DNS+DHCP+DDNS
  14. 计算机双工模式,windows10系统如何设置网络双工模式?
  15. Python攻城师的成长————css语法、伪元素选择器(部分)
  16. Linux 查找项目路径
  17. vue随机头像与昵称
  18. 小型软件团队该如何分工(转)
  19. java代码删除ElasticSearch索引
  20. 2022年了,你还没搞清楚箭头函数与普通函数的区别嘛?

热门文章

  1. SDK is not loaded yet解决方法
  2. 易灵思FPGA-项目设计指南一
  3. 基于java+ssm+vue+mysql的银行排队叫号系统
  4. 整车研发项目阶段归纳
  5. WordPress插件互相冲突的解决方法
  6. 华兴资本首日破发 包凡:对短期股价波动我们不太在意
  7. myeclipse重新编译java,反编译class文件并重新编译的方法
  8. GetTickCount() 的另一种实现方法
  9. Python海龟数据分析,第七次全国人口普查历年数据图表.py
  10. 基于Java毕业设计宠物管理系统源码+系统+mysql+lw文档+部署软件