1.构建JS登录脚本

JavaScript018

1.构建JS登录脚本,第1张

在编写xshell脚本的过程中用到最多的就是自动输入,自动捕获,延时等语句

自动输入

以自动输入xyz为例

自动输入的语句:xsh.Screen.Send("xyz")

当然,如果你输入的是一条命令,还需要下面这一行输入回车

输入回车的语句:xsh.Screen.Send(String.fromCharCode(13))

自动捕获

以linux系统为例,一般程序执行的打印数据位于倒数第二行,如下图所示

/* 字符串处理 */

var ScreenRow, ReadLine, Items

/* 读取倒数第二行,长度为40个字符 */

ScreenRow = xsh.Screen.CurrentRow - 1

ReadLine = xsh.Screen.Get(ScreenRow, 1, ScreenRow, 40)

延时

以等待1s为例

延时语句:xsh.Session.Sleep(1000)

其他

打开新会话:xsh.Session.Open(string)

对话框提醒:xsh.Dialog.MsgBox(string)

设置日志路径:xsh.Session.LogFilePath = string

开始记录日志:xsh.Session.StartLog()

清屏函数:xsh.Screen.Clear()

等待输入:xsh.Screen.WaitForString(string)

示例

本文以一个自动测试脚本为例,定时向/tmp/test文件写入数据,然后回读打印,截获回读打印的值进行分析

/* 测试函数 /

function test()

{

/ 发送echo 112233 >/tmp/testfile */

xsh.Screen.Send("echo 112233 >/tmp/testfile")

xsh.Screen.Send(String.fromCharCode(13))

}

/* 主函数 /

function Main()

{

/ 打开会话,根据实际的会话路径修改 */

xsh.Session.Open("C:\Users\Administrator\Documents\NetSarang Computer\6\Xshell\Sessions\ubuntu.xsh")

xsh.Screen.Synchronous = true

// xsh.Screen.WaitForString("start")

// xsh.Screen.Clear()

}

运行脚本的操作:

在编写xshell脚本的过程中用到最多的就是自动输入,自动捕获,延时等语句

自动输入

以自动输入xyz为例

自动输入的语句:xsh.Screen.Send("xyz")

当然,如果你输入的是一条命令,还需要下面这一行输入回车

输入回车的语句:xsh.Screen.Send(String.fromCharCode(13))

自动捕获

以linux系统为例,一般程序执行的打印数据位于倒数第二行,如下图所示

/* 字符串处理 */

var ScreenRow, ReadLine, Items

/* 读取倒数第二行,长度为40个字符 */

ScreenRow = xsh.Screen.CurrentRow - 1

ReadLine = xsh.Screen.Get(ScreenRow, 1, ScreenRow, 40)

延时

以等待1s为例

延时语句:xsh.Session.Sleep(1000)

其他

打开新会话:xsh.Session.Open(string)

对话框提醒:xsh.Dialog.MsgBox(string)

设置日志路径:xsh.Session.LogFilePath = string

开始记录日志:xsh.Session.StartLog()

清屏函数:xsh.Screen.Clear()

等待输入:xsh.Screen.WaitForString(string)

示例

本文以一个自动测试脚本为例,定时向/tmp/test文件写入数据,然后回读打印,截获回读打印的值进行分析

/* 测试函数 /

function test()

{

/ 发送echo 112233 >/tmp/testfile */

xsh.Screen.Send("echo 112233 >/tmp/testfile")

xsh.Screen.Send(String.fromCharCode(13))

}

/* 主函数 /

function Main()

{

/ 打开会话,根据实际的会话路径修改 */

xsh.Session.Open("C:\Users\Administrator\Documents\NetSarang Computer\6\Xshell\Sessions\ubuntu.xsh")

xsh.Screen.Synchronous = true

// xsh.Screen.WaitForString("start")

// xsh.Screen.Clear()

}

运行脚本的操作:

实际执行结果如下:

主要是用正则表达式的分组匹配技术。1、以某字符结尾:例如sex$;2、中间不包含该字符串:^((?!sex).*)3、最后合起来就是:^((?!sex).*)sex$“正则表达式”选中以某些字符开始,某些字符结尾的字符串?的含义如下:字符 含意:\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b" ,当b 前面加了反斜杆后/\b/,转意为匹配一个单词的边界。-或-对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa ,加了"\"后,/a\*/将只匹配"a*"。^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa? 匹配前面元字符0次或1次,/ba*/将匹配b,ba(x) 匹配x 保存x 在名为$1...$9的变量中x|y 匹配x 或y,{n} 精确匹配n 次,{n,} 匹配n 次以上{n,m} 匹配n-m 次,[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)[^xyz] 不匹配这个集合中的任何一个字符,[\b] 匹配一个退格符,\b 匹配一个单词的边界\B 匹配一个单词的非边界,\cX 这儿,X 是一个控制符,/\cM/匹配Ctrl-M。