ansible批量机器免密管理脚本

我主要利用ansible主要用于批量分发软件、安装、配置等工作,ansible利用每台服务器都已安装的ssh软件,即可实现免客户端管理所有的节点,在管理前需要先装自己的公钥发送给对方,如何操作呢?

答:在ansible管理节点,通过ssh-keygen生成密钥对,再通过ssh-copy-id点对点发送给被管理主机。

如果有100台机器呢?如何快速分发密钥呢?

可以通过以下脚本实现密钥快速发送。

复制代码

[root@ans-188 ~]# vim /scripts/fenfa02.sh


#!/bin/bash
######################################### #####################
# File Name:fenfa02.sh
# Version:V1.0
# Author:shawyc996
# Organization:shawyc.cn
# Desc:
######################################### #####################
#!/bin/bash
#author: shawyc
#desc:
# 1.一键创建秘钥对(如果不存在)
# 2.一键分发公钥
# 3.一键检查


#1.vars
key=/root/.ssh/id_rsa
ip_group1="1 2 84 39 40 41 42 43 35 "
pass_g1=4rfv%TGB
ip_group2="162 163 193 194"
pass_g2=ZykUig9s4ZmCC
#2. 一键创建秘钥对
if [ ! -f $key ];then
ssh-keygen -f $key -P '' &>/dev/null
if [ $? -eq 0 ];then
echo "秘钥对创建成功"
else
echo "秘钥对创建失败"
exit 1
fi
fi


#3. 一键分发公钥
echo "Group1分发公钥-开始"
for ip_g1 in $ip_group1
do
sshpass -p$pass_g1 ssh-copy-id -p 50788 -f -o StrictHostKeyChecking=no 10.10.106.$ip_g1
if [ $? -eq 0 ];then
echo "秘钥分发成功"
else
echo "秘钥分发失败"
exit 1
fi
done
echo "group1分发公钥-完成"
####
echo "Group2分发公钥-开始"
for ip_g2 in $ip_group2
do
sshpass -p$pass_g2 ssh-copy-id -p 50788 -f -o StrictHostKeyChecking=no 10.10.106.$ip_g2
if [ $? -eq 0 ];then
echo "秘钥分发成功"
else
echo "秘钥分发失败"
exit 1
fi
done
echo "group2分发公钥-完成"
#
#4.一键检查
echo "ip_g1检查-开始"
for ip_g1 in $ip_group1
do
ssh -p 50788 -o StrictHostKeyChecking=no 10.10.106.$ip_g1 hostname -I
if [ $? -eq 0 ];then
echo "执行成功"
else
echo "执行失败"
exit 1
fi
done
echo "ip_g1检查-结束"
##################3
echo "ip_g2检查-开始"
for ip_g2 in $ip_group2
do
ssh -p 50788 -o StrictHostKeyChecking=no 10.10.106.$ip_g2 hostname -I
if [ $? -eq 0 ];then
echo "执行成功"
else
echo "执行失败"
exit 1
fi
done
echo "ip_g2检查-结束"


 

 
复制代码

 

posted on   SRE-基础-进阶-实践  阅读(3)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

导航

< 2025年3月 >
23 24 25 26 27 28 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
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示