#!/usr/bin/env bash
# 写个用于自动生成密钥对的函数
rpm -qa |grep expect && echo "expect yi anzhuang" ||yum -y install expect
auto_keygen(){
/usr/bin/expect<<EOF
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
}
#ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
# 写个自动免密登录的函数
send_key(){
/usr/bin/expect <<EOF
spawn ssh-copy-id $1@$2
expect {
"*(yes/no)?" { send "yes\n"; exp_continue }
"*password:*" { send "$3\n"; exp_continue }
}
expect eof
EOF
}
# 定义一个变量,其值是当前用户的公钥文件
pub_key_file=$HOME/.ssh/id_rsa.pub
# 假如公钥文件不存在,说明需要创建密钥对
if [ ! -f ${pub_key_file} ];then
auto_keygen
fi
cat >ips.txt <<EOF
root 192.168.122.65
EOF
old_ifs=$IFS
IFS=$'\n'
for num in $(cat ips.txt)
do
a=$(echo $num | awk '{print $1}')
b=$(echo $num | awk '{print $2}')
read -p "$b passwd" c
send_key $a $b $c
done
export IFS=$old_ifs
批量拷贝公钥
最新推荐文章于 2022-02-15 11:41:53 发布