• 批量配置ssh无秘钥登录


    1.安装expect

    yum install expect

    2.单台节点配置

    vim single_ssh.sh

    #!/usr/bin/expect
    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $1
    expect {
        "yes/no" { send "yes\n";exp_continue }      # 替你回答下载公钥是的提示
        "password" { send "yourpassword\n" }         # 提示输入密码
    }
    interact
    expect eof

    执行:

    chmod +x single_ssh.sh

    ./single_ssh.sh node1
    3.批量配置

    vim batch_ssh.sh

    #!/bin/bash

    expect -c "
        spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $1
        expect {
            \"*yes/no*\" { send \"yes\n\";exp_continue }      # 替你回答下载公钥是的提示
            \"*password*\" { send \"123qwe\n\"; }         # 提示输入密码
        }
        interact
        expect eof
    "

    执行:

    chmod +x batch_ssh.sh

    for i in {1..10};do ./batch_ssh.sh node$i;done

    expect命令详解:

    spawn命令用来启动新的进程,spawn后的send和expect命令都是和使用spawn打开的进程进行交互。

    send命令接收一个字符串参数,并将该参数发送到进程。

    expect命令和send命令相反,expect通常用来等待一个进程的反馈,我们根据进程的反馈,再发送对应的交互命令。

    interact命令用的其实不是很多,一般情况下使用spawn、send和expect命令就可以很好的完成我们的任务;但在一些特殊场合下还是需要使用interact命令的,interact命令主要用于退出自动化,进入人工交互。比如我们使用spawn、send和expect命令完成了ftp登陆主机,执行下载文件任务,但是我们希望在文件下载结束以后,仍然可以停留在ftp命令行状态,以便手动的执行后续命令,此时使用interact命令就可以很好的完成这个任务。

  • 相关阅读:
    如何查看 SQL Server 执行的历史 SQL 语句记录?
    C# 父子窗体 传值
    java使用HttpURLConnection和HttpClient分别模拟get和post请求以及操作cookies
    selenium使用等待的几种方式
    初识selenium-grid
    selenium如何分别启动IE、firefox、chrome浏览器
    java在url传输前更改字符编码
    java获取Json和http状态码
    testng环境设置
    使用reportNG替换testNG的默认报告
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/15935600.html
Copyright © 2020-2023  润新知