内容纲要
脚本内容:
#!/bin/bash
#
#*********************************************
#Author: zhang
#QQ: 200957079
#URL: ztunan.top
#Date: 2022-10-11
#Filename: ssh_key_linux.sh
#Description: The test script
#*********************************************
#设置命令执行结果颜色
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = 0 ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"Warning"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
#判断命令是否执行成功
judge () {
judge=`echo $?`
if [ ${judge} = 0 ] ;then
color "执行成功" ${judge}
else
color "执行失败,请检查" 1
fi
}
#网段内主机密码,如果主机密码不统一,建议把主机IP/账号/密码/放入一个文件中,使用awk取出
PASS=xx..1027
#设置网段最后的地址,4-255之间,越小扫描越快
END=140
#取出IP段前三位
IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
. /etc/os-release
echo "删除本机私钥"
rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log
judge
echo "扫描存活主机并记录在SCANIP.log中"
for((i=3;i<="$END";i++));do
ping -c 1 -w 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log &
done
wait
judge
ssh-keygen -P "" -f /root/.ssh/id_rsa &>/dev/null
echo "系统为${ID},正在安装软件包,请等待。。。"
if [ $ID = "centos" -o $ID = "rocky" ];then
rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null
else
dpkg -i sshpass &> /dev/null || apt -y install sshpass &>/dev/null
fi
judge
echo "文件复制中。。。"
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP &> /dev/null
AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}: &>/dev/null
done
#把.ssh/known_hosts拷贝到所有主机,使它们第一次互相访问时不需要输入回车
for n in ${AliveIP[*]};do
scp /root/.ssh/known_hosts ${n}:.ssh/
done
judge