1. #!/bin/bash
    2. PASS=magedu
    3. #设置网段最后的地址,4-255之间,越小扫描越快
    4. END=254
    5. IP=`ip a s eth0 | awk -F'[ /]+' 'NR==3{print $3}'`
    6. NET=${IP%.*}.
    7. . /etc/os-release
    8. rm -f /root/.ssh/id_rsa
    9. [ -e ./SCANIP.log ] && rm -f SCANIP.log
    10. for((i=3;i<="$END";i++));do
    11. ping -c 1 -w 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log &
    12. done
    13. wait
    14. ssh-keygen -P "" -f /root/.ssh/id_rsa
    15. if [ $ID = "centos" -o $ID = "rocky" ];then
    16. rpm -q sshpass || yum -y install sshpass
    17. else
    18. dpkg -i sshpass &> /dev/null || apt -y install sshpass
    19. fi
    20. sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP
    21. AliveIP=(`cat SCANIP.log`)
    22. for n in ${AliveIP[*]};do
    23. sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
    24. done
    25. #把.ssh/known_hosts拷贝到所有主机,使它们第一次互相访问时不需要输入回车
    26. for n in ${AliveIP[*]};do
    27. scp /root/.ssh/known_hosts ${n}:.ssh/
    28. done
    1. #!/bin/bash
    2. #当前用户的密码
    3. PASS="magedu"
    4. #设置网段最小和最大的地址的尾数
    5. BEGIN=3
    6. END=254
    7. IP=$(ip addr show eth0 | awk -F'[ /]+' 'NR==3{print $3}')
    8. NET=${IP%.*}.
    9. . /etc/os-release
    10. function color()
    11. {
    12. RES_COL=60;
    13. MOVE_TO_COL="echo -en \\033[${RES_COL}G";
    14. SETCOLOR_SUCCESS="echo -en \\033[1;32m";
    15. SETCOLOR_FAILURE="echo -en \\033[1;31m";
    16. SETCOLOR_WARNING="echo -en \\033[1;33m";
    17. SETCOLOR_NORMAL="echo -en \E[0m";
    18. echo -n "$1" && $MOVE_TO_COL;
    19. echo -n "[";
    20. if [ $2 = "success" -o $2 = "0" ] ;then
    21. ${SETCOLOR_SUCCESS};
    22. echo -n $" OK ";
    23. elif [ $2 = "failure" -o $2 = "1" ] ;then
    24. ${SETCOLOR_FAILURE};
    25. echo -n $"FAILED";
    26. else
    27. ${SETCOLOR_WARNING};
    28. echo -n $"WARNING";
    29. fi
    30. ${SETCOLOR_NORMAL};
    31. echo -n "]";
    32. echo
    33. }
    34. #安装sshpass
    35. function install_sshpass()
    36. {
    37. if [[ $ID =~ centos|rocky|rhel ]] ;then
    38. rpm -q sshpass &> /dev/null || yum install -y sshpass
    39. else
    40. dpkg -l sshpass &> /dev/null || { sudo apt update;sudo apt install -y sshpass; }
    41. fi
    42. if [ $? -ne 0 ] ;then
    43. color '安装 sshpass 失败!' 1
    44. exit 1
    45. fi
    46. }
    47. function scan_host()
    48. {
    49. [ -e ./SCANIP.log ] && rm -rf SCANIP.log
    50. for ((i=$BEGIN;i<="$END";i++));do
    51. ping -c 1 -W 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> SCANIP.log &
    52. done
    53. wait
    54. }
    55. function push_ssh_key()
    56. {
    57. #生成ssh key
    58. [ -e ~/.ssh/id_rsa ] || ssh-keygen -P "" -f ~/.ssh/id_rsa
    59. sshpass -P $PASS ssh-copy-id StrictHostKeyChecking=no ${USER}@${IP} &> /dev/null
    60. ip_list=(`sort -t . -k 4 -n SCANIP.log`)
    61. for ip in ${ip_list[*]};do
    62. sshpass -p $PASS scp -o StrictHostKeyChecking=no -r ~/.ssh ${USER}@${ip}: &> /dev/null
    63. done
    64. #把.ssh/known_hosts拷贝到所有主机,使得它们第一次互相访问时不需要输入yes回车
    65. for ip in ${ip_list[*]};do
    66. scp ~/.ssh/known_hosts ${USER}@${ip}:.ssh/ &> /dev/null
    67. color "$ip" 0
    68. done
    69. }
    70. install_sshpass
    71. scan_host
    72. 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