expect批量分发

  工作中批量部署服务,需要传输软件包或者配置,由于需要数据用户密码,没法批量分发,现采用expect批量分发。
脚本如下:

1. expect脚本

cat scp.exp

#!/usr/bin/expect
set host_ip [lindex $argv 0]
spawn scp flume.property $host_ip:/tmp/
expect {
        "yes/no" { send "yes\r";exp_continue}
        "password" { send "xxxxxx\r"}
}
expect eof
exit -onexit {
        send_user "Job has finished!"
}

2 . 批量分发脚本

for ip in `cat ips`;do
expect scp.exp $ip
done

  

解释如下:

set host_ip [lindex $argv 0]  #设置第一个位置参数host_ip
expect ""       # 匹配输出的内容
exp_continue     #继续执行下面匹配

上一篇:深入浅出前端单元测试框架的实现原理


下一篇:shell脚本通过expect实现自动单边无密登录