#!/bin/bash
PASS=magedu
#设置网段最后的地址,4-255之间,越小扫描越快
END=254
IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
. /etc/os-release
rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f 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
ssh-keygen -P "" -f /root/.ssh/id_rsa
if [ $ID = "centos" -o $ID = "rocky" ];then
rpm -q sshpass || yum -y install sshpass
else
dpkg -i sshpass &> /dev/null || apt -y install sshpass
fi
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP
AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done
#把.ssh/known_hosts拷贝到所有主机,使它们第一次互相访问时不需要输入回车
for n in ${AliveIP[*]};do
scp /root/.ssh/known_hosts ${n}:.ssh/
done
#!/bin/bash
#当前用户的密码
PASS="magedu"
#设置网段最小和最大的地址的尾数
BEGIN=3
END=254
IP=$(ip addr show eth0 | awk -F'[ /]+' 'NR==3{print $3}')
NET=${IP%.*}.
. /etc/os-release
function 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
}
#安装sshpass
function install_sshpass()
{
if [[ $ID =~ centos|rocky|rhel ]] ;then
rpm -q sshpass &> /dev/null || yum install -y sshpass
else
dpkg -l sshpass &> /dev/null || { sudo apt update;sudo apt install -y sshpass; }
fi
if [ $? -ne 0 ] ;then
color '安装 sshpass 失败!' 1
exit 1
fi
}
function scan_host()
{
[ -e ./SCANIP.log ] && rm -rf SCANIP.log
for ((i=$BEGIN;i<="$END";i++));do
ping -c 1 -W 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log &
done
wait
}
function push_ssh_key()
{
#生成ssh key
[ -e ~/.ssh/id_rsa ] || ssh-keygen -P "" -f ~/.ssh/id_rsa
sshpass -P $PASS ssh-copy-id StrictHostKeyChecking=no ${USER}@${IP} &> /dev/null
ip_list=(`sort -t . -k 4 -n SCANIP.log`)
for ip in ${ip_list[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r ~/.ssh ${USER}@${ip}: &> /dev/null
done
#把.ssh/known_hosts拷贝到所有主机,使得它们第一次互相访问时不需要输入yes回车
for ip in ${ip_list[*]};do
scp ~/.ssh/known_hosts ${USER}@${ip}:.ssh/ &> /dev/null
color "$ip" 0
done
}
install_sshpass
scan_host
push_ssh_key
cat > hosts.list <<EOF
10.0.0.51
10.0.0.52
EOF
vim push_ssh_key.sh
#!/bin/bash
#Description: The script is kubesphere
rpm -q sshpass &> /dev/null || yum install -y sshpass
[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa -P ''
export SSHPASS=Admin@h3c
while read IP;do
sshpass -e ssh-copy-id $IP
done < hosts.list