批量拷贝公钥

#!/usr/bin/env bash

# 写个用于自动生成密钥对的函数

rpm -qa |grep expect && echo "expect yi anzhuang" ||yum -y install expect

auto_keygen(){

/usr/bin/expect<

set timeout 30

spawn ssh-keygen

expect {

        ".ssh/id_rsa)"      { send    "\n";  exp_continue }

        "Overwrite (y/n)?"  { send    "y\n"; exp_continue }

        "no passphrase):"    { send    "\n";  exp_continue }

        "again:"            { send    "\n";  exp_continue }

}

expect eof

EOF

}

# 写个自动免密登录的函数

send_key(){

#pw=123

/usr/bin/expect <

spawn ssh-copy-id $1@$2

expect {

        "(yes/no?)" { send "yes\n"; exp_continue }

        "password:" { send "$3\n"; exp_continue }

}

expect eof

EOF

}

#创建一个文件,并把需要登陆的信息输入(user ip passwd)

# 定义一个变量,其值是当前用户的公钥文件

pub_key_file=$HOME/.ssh/id_rsa.pub

# 假如公钥文件不存在,说明需要创建密钥对

if [ ! -f ${pub_key_file}  ];then

    auto_keygen

fi

cat >ips.txt <

root 192.168.122.161 1

EOF

# 循环一个存放 user ip passwd 的文件,并且把每个传递给 函数

while read line

do

    a=$(echo $line |awk '{print $1}')

    b=$(echo $line |awk '{print $2}')

    c=$(echo $line |awk '{print $3}')

    send_key $a $b $c

done

你可能感兴趣的:(批量拷贝公钥)