#!/bin/bash
###CentOS 7
###脚本用途:
###用普通用户免密下发任务上线或者拷贝程序包到目标主机,而不是root,降低风险
###for 完成循环,expect用于免交互,该脚本适合较多服务器的场景这里是130台左右的环境
#1.先决条件,
#2.用ansible创建目标所有机器普通op用户,并设置密码
#3.用ansible创建普通用户的/home/op/.ssh目录
#4.修改.ssh 目录的属主:属组为op;.ssh目录权限为700;
#5.登陆到代码发布主机,这里用的是瓦力2.0
#6.su - op 下执行该脚本,没有expect就yum -y install expect 安装
#7.执行脚本后自动在.ssh/下生成authorized_keys文件并且权限是600
PUBDIR=/home/op/.ssh
USER=op
PASSWD=op@xxxxx.
for IP in $(cat /home/op/iplist)
do
/bin/expect <<-EOF
set timeout 10
spawn ssh-copy-id -i $PUBDIR/id_rsa.pub $USER@$IP
expect {
"yes/no" { send "yes\r"; exp_continue }
"password:" { send "$PASSWD\r" }
}
expect eof
EOF
done
wait
echo "finish....ok"