“shell是世界上最好的脚本语言!”🌚🌚🌚
shell脚本虽然可以很方便的帮我处理一些琐碎的问题,但同时也有它的缺点:shell脚本是一种无交互式的脚本
什么叫无交互式呢,比如说删除这个命令
[root@localhost ~]# rm test
rm:是否删除普通文件 "test"?
在删除一个文件时,系统会给一条交互信息询问是否要删除文件,所以删除一个文件需要有两个操作:删除->确认删除(当然你也可以加-f来强制删除就不会有这个交互过程了,这里只是举一个例子),而shell执行命令时实际上只能一条一条的执行,并不能处理这些交互过程
所以这就引出了本文的主角:expect,一种交互式的脚本工具
其他我就不多说了,直接来将expect怎么使用吧
-
安装:
yum install expect
-
编写expect脚本:
- 脚本名一般以
.exp
结尾 - 第一行为
#!/usr/bin/expect
- 脚本名一般以
-
定义变量:
-
set 变量名 值
-
set 变量名 [lindex $argv 0]
:从命令参数数组中取值 -
特殊变量:
$argc
:参数个数,相当于shell中的$#
$argv
:所有参数的数组,索引从0开始
-
-
语句:
set 定义变量
set timeout 300
:将超时时间设置成300(秒)
spawn COMMAND
:监控命令的输出expect “STRING” { send “STRING” }
:捕获输出,并执行相应命令send “STRING\r”
:发送“STRING”,