批量自动分发Linux密码

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地址

posted @ 2024-10-22 15:27  帅帅啊  阅读(36)  评论(0)    收藏  举报