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" ]
doread -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>&1if [ $? -eq 0 ] then echo "${ip}${i}" >>./${tim}.txtelse breakfi
}&
done
wait#判断是否有存在的SSH DSA的密钥[ -e /root/.ssh/id_dsa.pub ]
if [ $? -eq 0 ]
thenif [ "${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 -qelsebreakfi
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/nullif [ $? = 0 ]thenaction "fenfa ${ip}" /bin/trueelseaction "fenfa ${ip}" /bin/falsefidone
echo " "#删除上面脚本产生的文件
\rm ./${tim}.txt -rf#存放的为可ping通的主机ip地址