一. 作用
实现交互任务自动化完成
二. 基本语法
1. 引入文件,表明使用的是哪一个Shell
#!/usr/bin/expect
2. 设置会话时间,若不限制超时时间设置为-1
set timeout 30 或 set timeout -1
设置变量:set param "param_str"
set param 1
3. 开启会话
spawn 命令
如:spawn su root
4. expect接受命令执行后的输出,和期望字符串匹配
注意:此处 { 和expect同在一行
若对应,执行相应send发送来的交互信
send会将expect脚本中需要的信息发送给sqawn启动的那个进程,send_user是回显用户发出的信息
如:
expect "*assword" 提示信息,等待用户输入密码
send "${password}\r" 模拟用户输入密码的字符串,完成登录验证
疑问?一个expect后一定要跟一个对应的Send和它匹配吗?
5. 结束符
expect eof 等待执行结束,若没有这一句,可能导致命令还没有执行,脚本就结束了
interact 执行完成后保持交互转态,此时可以手动输入信息
以上二者选一即可
6. 参数
$argc 参数个数
使用第一个参数:set param0 [lindex $argv 0](注意:参数下标从0开始)
$argv0 脚本名
exp_continue 跳出本次循环
7. if判断用{ }括起来,if与后面的{ }有空格,if的条件后要加 { ,此时 { 代表衔接下一行
两个花括号之间必须有空格,否则报错
8. else不可以单独放在一行,即要跟在 } 后面