工作中批量部署服务,需要传输软件包或者配置,由于需要数据用户密码,没法批量分发,现采用expect批量分发。
脚本如下:
cat scp.exp
#!/usr/bin/expectset 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 eofexit -onexit { send_user "Job �����ֽ�,ҧ�Ľ���has finished!"}
2 . 批量分发脚本for ip in `cat ips`;doexpect scp.exp $ipdone
解释如下:
set host_ip [lindex $argv 0] #设置第一个位置参数host_ip
expect "" # 匹配输出的内容
exp_continue #继续执行下面匹配