在应用ansible的实际情况中,有一个很现实的问题,ansible是需要对主机做ssh免密登陆的,而挨个对主机做免密是非常的繁琐的,挨个敲IP不仅非常的繁琐而且容易出错,为解决这个问题,为以后使用ansible时的便捷,写了一个小脚本,实现批量对主机的免密配置
安装sshpass
生成本地私钥
创建服务器信息文件
1
2
3
4
| cat << EOF >> hosts.txt
192.168.1.10 22 root root
192.168.1.11 22 root root
EOF
|
分发公钥
脚本内容如下,也放在了Github
1
| wget https://raw.githubusercontent.com/bwcxyk/shell_script/main/key.sh
|
key.sh文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| #!/usr/bin/env bash
# author yao
# date 2021.3.1 13:14:36
. /etc/init.d/functions
# 分发公钥
cat hosts.txt | \
while read ipaddr port user passwd
do
sshpass -p ${passwd} \
ssh-copy-id ${user}@${ipaddr} \
-p ${port} \
-i ~/.ssh/id_rsa.pub \
-o StrictHostKeyChecking=no; \
&>/dev/null
# 判断是否成功
if [ $? -eq 0 ]
then
action "${ipaddr} " /bin/true
echo ""
else
action "${ipaddr} " /bin/false
echo ""
fi
done
|