2. 批量自动分发密钥(完整版)
#本shell脚本是基于DSA加密方式进行加密的,测试的环境为centOS7.5,若要使用别的加密方式,请修改源代码,此脚本可以自动发现IP地址,并分发分发,同一网段的IP地址,目前还不可以分发多网段的IP地址。
#可以实现SSH密钥基于DSA方式密钥的分发及创建新密钥并进行分发。
#!/bin/bash
. /etc/rc.d/init.d/functions #使用action
#请根据第14行的提示,修改第15行的内容,改为需要分发的IP网段。
#填写发现主机IP地址的网段的前3段,如 172.16.1. 即可
while [ "" ]
read -p "请输入要分发SSH密钥对的网段:
格式:172.16.1. 即可
" ip
#询问是否更新DSA密钥对,还是继续使用本地原有的密钥对
while [ "$my" != "y" -a "$my" != "n" ]
do
read -p "是否创建更新DSA密钥对
是 请输入:y ;否 请属于 n
输入字符应为小写字符" my
done
#填写主机的密码
read -p "请属于主机密码:" ma
#查找这个网段,可以ping通的IP地址
#ip存放的文件路径
while true
do
tim=`date +\%N`
[ -e ./${tim}.txt ] && continue
break
done
#开始查找主机段,将可ping通的IP地址放入一个文件中
for i in `seq 254`
do
{
ping -w 2 -c 2 ${ip}${i} >/dev/unll 2>&1
if [ $? -eq 0 ]
then
echo "${ip}${i}" >>./${tim}.txt
else
break
fi
}&
done
wait
#判断是否有存在的SSH DSA的密钥
[ -e /root/.ssh/id_dsa.pub ]
if [ $? -eq 0 ]
then
if [ "${my}" -eq "y" ]
then
#删除主机本身密钥
\mkdir -p /tmp/ssh/
\mv -f /root/.ssh/id_* /tmp/ssh/
#创建主机新密钥
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N '' >/dev/null 2>&1 -q
else
break
fi
else
#创建主机新密钥
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N '' >/dev/null 2>&1 -q
#批量分发ssh密钥文件
for ip in `cat ./${tim}.txt`
do
#开始进行非交互式批量分发DSA密钥
sshpass -p${ma} ssh-copy-id -i ~/.ssh/id_rsa.pub root@${ip} -o StrictHostKeyChecking=no &>/dev/null
if [ $? = 0 ]
then
action "fenfa ${ip}" /bin/true
else
action "fenfa ${ip}" /bin/false
fi
done
echo " "
#删除上面脚本产生的文件
\rm ./${tim}.txt -rf
#存放的为可ping通的主机ip地址
标签:分发,网段,批量,ip,IP地址,ssh,Linux,密钥
From: https://www.cnblogs.com/megshuai/p/18492959