使用VBS编写xshell/SecureCRT自动化脚本
目录
- 一、xshell脚本添加方法
- 1.1 加入会话,每次打开自动运行
- 1.2 进入——>工具——>脚本,手动运行
- 二、相关函数和参数
- 2.1 xsh.Session
- 2.1.1函数
- 2.1.2 变量
- 2.2 xsh.Screen
- 2.2.1函数
- 2.2.2 变量
- 2.3 xsh.Dialog
- 2.3.1 函数
- 2.3.2 变量
- 三、参考用例
- 3.1 官方参考用例
- 3.2 自写的一个自动登录串口并不断重启的一个挂机脚本
- 四、待补充SecureCRT
一、xshell脚本添加方法
1.1 加入会话,每次打开自动运行
1.2 进入——>工具——>脚本,手动运行
二、相关函数和参数
xshell官方技术手册
2.1 xsh.Session
下面的函数或变量在xshell会话中使用,使用的时候要指定会话一起使用,比如使用Sleep()函数,要这样使用:xsh.Session.Sleep(1000)
2.1.1函数
返回值 | 函数 | 参数 | 说明 |
---|---|---|---|
void | Open(LPCTSTR lpszSession) | lpszSession:字符串,指Xshell会话路径或Xshell使用的URL类型。 | 打开新会话或URL。需要把 /s选项置于字符串的前端。例如要打开A.xsh会话使用‘/s $PATH/A.xsh’ |
void | Close() | 关闭当前连接的会话。 | |
void | Sleep(long timeout) | Timeout:毫秒单位的时间值 | Xshell按照指定时间进行待机。 |
void | LogFilePath(LPCTSTR lpszNewFilePath) | lpszNewFilePath:包括路径在内的文件名 | 指定日志文件。 |
void | StartLog() | 开始会话的日志记录。日志将被保存到LogFilePath()指定的路径。如果没有指定日志文件路径则使用默认路径。 | |
void | StopLog() | 停止日志记录。 |
2.1.2 变量
名称 | 类型 | 说明 |
---|---|---|
Connected | BOOL | 检查当前会话是否连接。 |
LocalAddress | BSTR | 导入本地地址。 |
Path | BSTR | 导入当前会话文件的路径。 |
RemoteAddress | BSTR | 导入远程地址。 |
RemotePort | long | 导入远程端口号。 |
Logging | BOOL | 检查当前会话是否记录日志。 |
LogFilePath | BSTR | 保存为日志文件。 |
2.2 xsh.Screen
下面的函数和变量在处理xshell终端屏幕的时候使用,使用的时候要配合xsh.Screen一起使用,比如要使用Clear()函数,要这样使用:xsh.Screen.Clear
2.2.1函数
返回值 | 函数 | 参数 | 说明 |
---|---|---|---|
void | Clear() | 清除终端屏幕。 | |
void | Send(LPCTSTR lpszStrToSend) | lpszStrToSend:用户拟要发送的字符串 | 向终端发送消息。 |
BSTR | Get(long nBegRow, long nBegCol, long nEndRow, long nEndCol) |
nBegRow:终端的行起始位置 nBegCol:终端的列起始位置 nEndRow:终端的行末端位置 nEndCol:终端的列末端位置 |
读入终端规定区域的字符串并返回读取值。 |
void | WaitForString(LPCTSTR lpszString) | lpszString:终端中打印的字符串 | 等待终端打印lpszString字符串。 |
Long | WaitForStrings(VARIANT FAR* strArray, long nTimeout) | strArray:终端中打印的字符串 nTimeout:等候时间 返回值:发现的字符数 | 等待某消息直到超时。 |
2.2.2 变量
名称 | 类型 | 说明 |
---|---|---|
CurrentColumn | long | 返回当前列数。 |
CurrentRow | long | 返回当前行数。 |
Columns | long | 返回与终端的列宽相同的列数。 |
Rows | long | 返回与终端的行高相同的行数。 |
Synchronous | BOOL | 设置屏幕同步 (True:屏幕同步,false:屏幕不同步) |
2.3 xsh.Dialog
使用的时候要配合xsh.Dialog一起使用,比如要使用MsgBox()函数,要这样使用:xsh.Dialog.MsgBox()
2.3.1 函数
返回值 | 函数 | 参数 | 说明 |
---|---|---|---|
Long | MsgBox(LPCTSTR lpszMsg) | LpszMsg:想要发送的字符串 | 打开一个消息框 |
string | Prompt(LPCTSTR lpszMessage, LPCTSTR lpszTitle, LPCTSTR lpszDefault, BOOL bHidden) |
lpszMessage:在对话框上显示的字符串。 lpszTitle:在对话框标题栏显示的字符串。 lpszDefault:在对话框输入框中初始显示的字符串。 bHidden:如果设置为True,输入会被隐藏 (e.g. *****) |
作用:返回用户在对话框中的输入。 返回值:用户在对话框中的输入。 |
int | MessageBox(LPCTSTR lpszMessage, LPCTSTR lpszTitle, int nType) |
lpszMessage:在消息框中显示的字符串。 lpszTitle:在消息框标题栏显示的字符串。 nType:按钮类型,参考下面的表。 |
作用:按照用户选择的按钮类型显示消息框并返回相应的值。 返回值:参考下面的表。 |
2.3.2 变量
类型 | Button | 返回值 |
---|---|---|
0 | OK | 1 |
1 | OK / Cancel | 1 / 2 |
2 | Abort / Retry / Ignore | 3 / 4 / 5 |
3 | Yes / No / Cancel | 6 / 7 / 2 |
4 | Yes / No | 6 / 7 |
5 | Retry / Cancel | 4 / 2 |
6 | Cancel / TryAgain / Continue | 2 / 10 / 11 |
三、参考用例
3.1 官方参考用例
Sub Main' *** Connect the session ***
xsh.Session.Open "ssh://192.168.1.17"
' "/s C:\Users\Administor\AppData\Roaming\NetSarang\Xshell\Sessions\example.xsh"xsh.Screen.Synchronous = truexsh.Screen.WaitForString "login: "
xsh.Screen.Send "username"
xsh.Screen.Send VbCr
xsh.Session.Sleep 100xsh.Screen.WaitForString "Password: "
xsh.Screen.Send "password"
xsh.Screen.Send VbCr
xsh.Session.Sleep 100' *** Wait for Prompt Message ***
xsh.Screen.WaitForString "username@password"' *** Set File Format ***
Dim app, wb, ws
Set app= CreateObject("Excel.Application")
Set wb = app.Workbooks.Add
set ws = wb.Worksheets(1)xsh.Session.LogFilePath = "c:\example.log"
xsh.Session.StartLogDim waitStrs
waitStrs = Array(Chr(10), "username@password") ' make wait message as arrayDim row, screenrow, readline, itmes
row = 1' *** Send Command ***
xsh.Screen.Send "cat /etc/passwd"
xsh.Screen.Send VbCr
xsh.Session.Sleep 100Dim result' *** Read Data and Save it as an EXCEL File ***
Do
While true
result = xsh.Screen.WaitForStrings(waitStrs, 1000)If result = 2 Then
Exit Do
End Ifscreenrow = xsh.Screen.CurrentRow - 1
readline = xsh.Screen.Get(screenrow, 1, screenrow, 40)
items= Split(readline, ":", -1)ws.Cells(row,1).Value = items(0)
ws.Cells(row,2).Value = items(2)row = row + 1
Wend
Loopwb.SaveAs("C:\chart.xls") ' save file path
wb.Close
app.QuitSet ws = nothing
Set wb = nothing
Set app = nothingxsh.Screen.Synchronous = falsexsh.Session.StopLogEnd Sub
3.2 自写的一个自动登录串口并不断重启的一个挂机脚本
说明
1.第一次写VBS的脚本,语法可能会有不规范;
2.这里每一次重启后都是等待的延时,最开始用的字符串判断,但是这个串口会不断地打印很多数据,且时间不固定,虽然每次都会一定出现某一字符串,但是经过测试,xsh.Screen.WaitForString的检测总会出现检测不到的情况,尤其这种检测一大段字符串的情况。所以这里直接使用了延时;
3.下面几个判断,如xsh.Screen.WaitForStrings(“login”, 2000) = 0 ,文档写的此函数的返回值是发现的字符数,按理说应该是 >0或者!=0,这里等于0不就是没有发现吗? 但是此判断条件确实无误,未识别会反复识别且不进入下一判断,而且挂机了1000多次也没问题。 虽然功能完成,但是和文档描述不符,有些疑惑,如有知道者望指导。
Sub mainDim i, j, test_count, wait_times, flag1i = 0j = 0test_count = 100wait_times = 10flag1 = 1xsh.Screen.Synchronous = truedo while i < test_countxsh.Session.Sleep 80000xsh.Screen.Send VbCrxsh.Session.Sleep 300flag2 = 0doflag1 = 0if xsh.Screen.WaitForStrings("login", 2000) = 0 Thenxsh.Screen.Send "root" & VbCrxsh.Session.Sleep 300if xsh.Screen.WaitForStrings("Password", 2000) = 0 Thenxsh.Screen.Send "passsword" & VbCrxsh.Session.Sleep 300do while xsh.Screen.WaitForStrings("root@", 2000) = 0xsh.Screen.Send VbCrif xsh.Screen.WaitForStrings("root@", 1000) <> 0 Thenflag2 = 1exit doelseflag1 = 1end ifloop elsexsh.Screen.Send VbCrxsh.Session.Sleep 300flag1 = 0end ifelsexsh.Screen.Send VbCrxsh.Session.Sleep 300flag1 = 0end ifif flag2 = 1 Thenexit doend ifloop while flag1 <> 1do while j < wait_timesxsh.Session.Sleep 1000j = j + 1loopxsh.Screen.Send VbCrxsh.Session.Sleep 300xsh.Screen.Send "reboot" & VbCri = i + 1xsh.Session.Sleep 20000j = 0loop
End Sub
四、待补充SecureCRT
后面再补充SecureCRT的相关知识,发现SecureCRT支持的函数比xshell要多要完善,但是吧,它的界面有点老,用起来不太舒服,所以还没有深入研究。但是查找资料得知,其支持的函数和资料确实丰富。
使用VBS编写xshell/SecureCRT自动化脚本相关推荐
- 【移动测试ios】编写和运行自动化脚本
[移动测试iOS]编写和运行自动化脚本 准备工作 编写和运行自动化脚本 准备工作 1.使用Xcode打开要运行的程序 2.选择将要运行的程序和模拟器设备 3.command+r运行 4.打开并启动ap ...
- 2.4 编写第一个自动化脚本
编写一个简单的自动化脚本 1 #coding=utf-8 2 from Selenium import webdriver 3 driver = webdriver.Firefox() 4 drive ...
- Pycharm中用Appium框架编写第一个自动化脚本
一.环境依赖 ·Node.js ·appium ·python ·jdk ·Android SDK ·Appium-Python-Client ·Appium-doctor 二.环境搭建 提醒:安装路 ...
- SecureCRT自动化脚本
本文目录 脚本文件头 crt的属性 Dialog 介绍 Dialog的方法 FileOpenDialog MessageBox Prompt Screen 介绍 Screen的属性 CurrentCo ...
- appnium+python+夜神模拟器编写第一个自动化脚本
1>前言 之前已经搭好了appnium和安卓环境,本章介绍下基于模拟器实现自动化测试,会引入3个知识:1.安卓模拟器的对接这套自动化环境的相关配置:2.利用安卓工具uiautomatorview ...
- 微信的新消息一键标为已读.简单的微信脚本,使用autojs编写的安卓自动化脚本
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
- Selenium 编写第一个自动化脚本
代码块: package com.chenhuai.test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; ...
- 如何脱离AirtestIDE跑Airtest自动化脚本
此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 1. 前言 新手同学往往会借助AirtestIDE ...
- 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...
在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例.就像功能测试一样,当测试人员做了一些操作之后必然会判断实际结果是否等于预期结果,只不过,这个 ...
- 怎么快速写python自动化脚本_自动化脚本如何编写?
首先,我们看一个视频 ,通过视频,了解下什么是自动化脚本 . 这个是我用auto.js写的一个 抖音自动养号脚本 .大体功能就是自动私信,评论,关注 , 有兴趣可以先去一下链接了解 . 目前编写自动化 ...
最新文章
- 本地导入Android-PullToRefresh库问题解决
- MySQL 服务端调优
- python空行拼接字符串_python基础---文本和字符串操作
- 信息系统项目管理师-项目合同管理考点笔记
- LINUX下使用elasticsearch-jdbc工具实现MySQL同步到ElasticSearch 以及linux 64位centos系统安装jdk1.8
- 正则表达式 学习笔记3.4
- 与number_format函数有关的一个bug?
- 语言爬虫字段为空_我为什么建议前端将Python 作为第二语言?
- SPSS 虚拟变量(图文+数据集)【SPSS 038期】
- numpy获得ndarray的byte数 内存中的大小
- 【操作系统真象还原】Mac安装配置bochs
- 菜鸡的求学之路-JavaScript
- 空转工具推荐 | 10款空间转录组去卷积工具的综合比较
- c语言2维数组每一行最小值,二维数组每一行最大值
- 掌门教育荣获2020中国教育资本论坛“最具投资价值奖” 迎市场用户双重好评
- 关于element upload上传时额外参数的问题
- 【刷题】洛谷 P3613 睡觉困难综合征
- PS一次性导出多倍图@1x、@2x、@3x
- 什么是网站站群?网站站群有哪些类型?
- 自动控制系统的时域分析法——一阶系统的时域分析
热门文章
- android 用户绑定银行卡,android 开发 怎么实现银行卡转账,绑定银行卡。 怎么实现评论回复功能。...
- 雅诗兰黛公司将收购Dr. Jart+
- 接口流量突增,如何做好性能优化?
- 基于SPSS的医疗医保费用数据分析预测(C#)
- T-SQL简介及基本语法
- W ndows路由设置,windows下的双线双IP智能路由配置方法
- python 预测分析_如何用Python来预测分析离职率呢
- android备忘录的开发总结报告,android备忘录
- 计算机主机实际功率,PC动力之源,一起来算算电源真实功率吧!
- (小柯-java- 基础)