Linux expect spawn用法教程
背景
开发中,经常会有一些任务需要人机交互,比如登录到某台server上,远程拷贝其上的软件,并分发到其他sever上。
传统的操作方式,会产生开发人员与计算机的交互,如等待用户输入密码之类的操作会打断自动化流程的实现。
解决方案
使用expect + 其内部命令 spawn 可以实现类似的自动化需求。
centos可以通过如下命令快速安装expect组件:
yum -y install expect
案例1
脚本1:test1.sh
实现功能:
远程登录到server上,并执行指定的操作,如:
①、启动某服务进程;
②、文件或文件夹操作;
③、scp操作;
#!/usr/bin/expect
set timeout 10
spawn ssh [email protected]
expect "*password*"
send "abc123\r"
expect "#"
#send "service scm-agent status\r"
send "mkdir -p ~/david/test \r"
expect eof
案例2
脚本:test2.sh
实现功能:
①、远程登录到server上;
②、在超时时间内(这里为60秒),等待用户在远程server上实现交互式操作。
#!/usr/bin/expect
set timeout 60
spawn ssh -l root 111.111.111.111
expect "password:"
send "abc123\r"
interact
参考列表