工作中批量部署服务,需要传输软件包或者配置,由于需要数据用户密码,没法批量分发,现采用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 #继续执行下面匹配