TTL脚本介绍及使用
文章目录
1.tera term超级终端
一款Window上的虚拟终端工具,它同时支持串口连接和网络连接,而对于网络连接它支持Telnet和SSH协议。最关键的是Tera Term支持自己的脚本语言,即TTL(Tera Term Language)。该语言语法丰富而且简单易学,同时Tera Term 支持命令行操作,两者结合起来可以满足各种自动化方面的需求。
2.TTL基本命令
- Pause:暂停
- pause
- Sendln:发送命令并换行
- Send:发送命令
- wait:等待字符串出现
3.TTL语法格式
注释:
; 分号开始的行是注释行
var = 0 ; 这里分号右边开开始也算注释
字面量:
; 支持正数负数, 不支持浮点数
123
-11
; $开始的数字是16进制
$3a
$10F
; 字符串
'Hello, world'
"I can't do that"
"汉字也支持"
; #开头的是ASCII码值字符, 也就是#后的数字查ASCII码表对应的是哪个字符就是哪个字符
#65 ; 文字 "A"
#$41 ; 文字 "A"
#13 ; CR 文字
; 字符串可以直接拼接
'cat readme.txt'#13#10 ; 相当于 "cat readme.txt\r\n"
'abc'#$0d#$0a'def'#$0d#$0a'ghi'
变量:
变量包括用户自定义变量和系统变量两部分.
下面将分别介绍一下.
自定义变量:
定义变量无需指定类型, 直接使用 变量名 = 值
的语法即可.
; 定义普通变量
_var = 'valid' ; 下划线开始的变量名合法
var_1 = 1 ; 这是一个数字
var_2 = 'str' ; 这是一个字符串
; 定义数组及赋值
intdim a 3 ; int数组
a[0] = 1
a[1] = 2
a[2] = 3
strdim s 3 ; str数组
s[0] = '1'
s[1] = '2'
s[2] = '3'
系统变量:
TTL 预置使用了一些系统变量, 写脚本的时候注意不要占用. 阅读脚本的时候要注意这些是系统变量, 是作为系统函数返回值而存在的.
常见的有 inputstr
, matchstr
, param1
… param9
, params
, result
, timeout
等.
具体请查看 Tera Term 的帮助文件.
inputstr ; waitln等函数的接收到的值存放于此
matchstr ; strmatch等函数的值存放于此
param1 ; 调用脚本时候传入的第一个参数
params ; 调用脚本时候传入的所有参数的数组
result ; waitln等函数执行的结果code存放于此
timeout ; 超时时间
流程控制:
TTL 也支持基本的流程控制操作.
do, loop
; 循环10次
i = 10
do while i > 0
i = i - 1
loop
while, endwhile
; 循环10次
i = 10
while i > 0
i = i - 1
endwhile
until, enduntil
; 循环10次
i = 1
until i > 10
i = i + 1
enduntil
for, next
; 循环10次
for i 1 10
sendln 'abc'
next
; 循环5次
for i 5 1
sendln 'abc'
next
if, then, elseif, else, endif
if a = 1 then
b = 1
c = 2
d = 3
endif
if i < 0 then
i = 0
else
i = i + 1
endif
if i = 1 then
c = '1'
elseif i = 2 then
c = '2'
elseif i = 3 then
c = '3'
else
c = '?'
endif
break, continue
; break
while 1
recvln
strcompare inputstr "OK"
if result = 0 then
break
else
sendln "abc..."
endif
endwhile
; continue
a = 0
b = 0
while a < 5
a = a + 1
if a > 2 then
continue
endif
b = b + 1
endwhile
sprintf2 var "a=%d b=%d" a b
dispstr var
; a=5 b=2
子过程
TTL 可以定义一些子过程, 方便重复调用. 但是没有返回值, 不能称之为函数.
定义子过程首先要了解 label 标签
; 冒号开始的是标签
: I_am_a_label ; 这就是一个标签
可以这样定义和调用子过程:
messagebox "I'm in main." "test"
; 跳转到":sub"
call sub
messagebox "Now I'm in main" "test"
end
; 子过程具体定义
:sub
messagebox "Now I'm in sub" "test"
return ; 返回到主体
4.实例
4.1 ssh登陆实例
; login infomation
HOSTNAME = '192.168.109.129'
USERNAME = 'root'
PASSWORD = '123456'
; login command
sprintf2 server '%s:22 /ssh /auth=password /user=%s /passwd=%s' HOSTNAME USERNAME PASSWORD
connect server
wait '$' '#'
;
sendln "echo hello TTL"
4.2 使用tcpdump抓包并且备份
; A login sample by zhanglintc
; no timeout for keyword 'wait'
; login infomation
HOSTNAME = '192.168.109.129'
USERNAME = 'root'
PASSWORD = '123456'
; login command
sprintf2 server '%s:22 /ssh /auth=password /user=%s /passwd=%s' HOSTNAME USERNAME PASSWORD
connect server
wait '$' '#'
; 抓包
sendln "tcpdump -i ens33 port 8080 -w /root/package-content/jeesite/test3.cap"
wait '$' '#'
; 转移数据包
sendln "mv -f -b -v /root/package-content/jeesite/test3.cap /root/package-content/jeesitebak/"
; 退出终端
sendln "exit"