• Linux 集群使用 Shell 脚本自动完成免密登录


    在部署 Linux 集群环境的时候,时钟同步 (NTP) 必定用到,而某些时候可能也需要用到主机免密登录,5 节点以下还可以手动配置,但如果节点规模较大,则需要考虑自动化了。

    使用 Shell 脚本简单快速,上手容易。

    代码如下,请自行按需要修改,比较容易理解。

    #!/bin/bash
    # by liuxg
    # 2019.05.15
    # passwdless.sh
    
    
    # echo 
        # -n 不要在最后自动换行
        # -e 处理特殊字符
    
    
    # expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
    # expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。
    # expect需要Tcl编程语言的支持,要在系统上运行expect必须首先安装Tcl。(源码安装要注意)
    
    yum install expect -y  #安装expect
    echo "按enter键3次即可"
    
    # 生成秘钥(按enter键3次即可生成)
    ssh-keygen -t rsa   
    
    SERVERS="172.18.74.167 172.18.74.169 172.18.74.172 172.18.74.173 172.18.74.174"   #需要配置的主机名
    #SERVERS="m1 m2 m3 n1 n2"
    PASSWORD=123456   #需要配置的主机登录密码
     
    #将本机生成的公钥复制到其他机子上
    #如果(yes/no)则自动选择yes继续下一步
    #如果password:怎自动将PASSWORD写在后面继续下一步
    auto_ssh_copy_id(){
            expect -c "set timeout -1;
            spawn ssh-copy-id $1;                                
            expect {
                    *(yes/no)* {send -- yes
    ;exp_continue;}
                    *password:* {send -- $2
    ;exp_continue;}  
                    eof        {exit 0;}
            }";
    }
    
    ssh_copy_id_to_all(){
            for SERVER in $SERVERS #遍历要发送到各个主机的ip
            do
                    auto_ssh_copy_id $SERVER $PASSWORD
            done
    }
    ssh_copy_id_to_all
    passwordless.sh
  • 相关阅读:
    Linux文件目录结构详解
    Linux常用命令学习
    51Nod 1094 和为k的连续区间 | 水
    (转) jsp学习笔记
    Hadoop到底能做什么?怎么用hadoop?
    51Nod 1092 回文字符串 | 最长公共子序列变形
    51Nod 1067 Bash游戏 V2 | 博弈论 Bash
    51Nod 1062 序列中最大的数 | 简单DP
    51Nod 1050 循环数组最大子段和 | DP
    HDU 5643 King's Game | 约瑟夫环变形
  • 原文地址:https://www.cnblogs.com/liuxgcn/p/11154628.html
Copyright © 2020-2023  润新知