#!/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"