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 2025-02-21 01:03 SRE-基础-进阶-实践 阅读(3) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通