shell脚本引用expect完成人机交互,实现自动登录

在shell中总会遇见一些需要人机交互输入的内容,比较通用的方法个人喜欢使用expect。

安装

ubuntu

1
apt-get install tcl tk expect

命令

expect有几个核心的指令:

  • spawn:启动新进程,后跟新进程要执行的指令;
  • expect:指定要监听的字符串,如果spawn进程返回了匹配的字符串(如标准输入的提示信息),则触发send;
  • send:发送指定的字符串到spawn进程,代替标准输入;
  • interact:用户参与交互;
  • “\r” #表示回车
  • exp_continue #当问题不存在时继续回答下边的问题
  • expect eof #问题回答完毕退出expect环境
  • set NAME [ lindex $argv n] #定义变量

#使用

虽然 expect 功能强大但是笔者还是喜欢用 bash 毕竟通用,在bash中引用expect的用法。下面得expect{}内应答内容与先后顺序无关。expect会自动帮你完成

1
2
3
4
5
6
7
8
9
10
11
#又拍登陆
/usr/bin/expect <<EOF
set timeout 10
spawn upx login
expect {
"ServiceName:" { send "$serviceNam\r";exp_continue }
"Operator:" { send "$operator\r";exp_continue }
#在流程上输入密码是最后一步,所以输完密码后退出expect
"Password:" { send "$password\r";expect eof }
}
EOF
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~