zoukankan      html  css  js  c++  java
  • expect 批量自动部署ssh 免密登陆

    [root@node2 ssh]# cat auto_ssh.sh 
    #!/usr/bin/expect -f
    ##########################################
    #通过SSH服务将id.pas.pub公钥推送到目标服务器实现免密登陆
    #参数:1.system_username
    #     2.system_password
    #     3.system_hostname
    #     4.CommandList [多个命令间;间隔]
    #返回值:
    #     0  成功
    #     1  参数个数不正确
    #     2  SSH 服务器服务没有打开
    #     3  SSH 用户名密码不正确
    #     4  连接SSH服务器超时
    ##########################################
    proc usage {} {
        regsub ".*/" $::argv0 "" name
        send_user "Usage:
    "
        send_user "$name system_username system_password system_hostname CommandList
    "
        exit 1
    }
    if {[llength $argv] !=3} {
        usage
    }
    
    #设置变量值
    set timeout 10 
    set system_username [lindex $argv 0] 
    set system_password [lindex $argv 1] 
    set system_hostname [lindex $argv 2] 
    #检查主机是否可达
    spawn ping ${system_hostname} -w 2
    expect {
     -nocase -re "100% packet loss" {
      send_error "Ping ${system_hostname} is unreachable, Please check the IP address.
    "
      exit 1
     }
    }
    #超时时间
    set timeout 60
    set resssh 0
    spawn ssh-keygen -t rsa
    expect {
            "*file in which to save the key*" {
                send "
    
    "
                send_user "/root/.ssh
    "
                exp_continue
            "*Overwrite (y/n)*"{
                send "n
    
    "
            }
            }
            "*Enter passphrase*" {
                send "
    
    "
                exp_continue
            }
            "*Enter same passphrase again*" {
                send "
    
    "
                exp_continue
            }
    }
    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $system_username@$system_hostname
    expect {
                #first connect, no public key in ~/.ssh/known_hosts
                "Are you sure you want to continue connecting (yes/no)?" {
                send "yes
    "
                expect "password:"
                    send "$system_password
    "
                }
                #already has public key in ~/.ssh/known_hosts
                "password:" {
                    send "$system_password
    "
                }
                "Now try logging into the machine" {
                    #it has authorized, do nothing!
                }
            }
    expect eof
  • 相关阅读:
    CBOW Model Formula Deduction
    RBM Formula Deduction
    various Sequence to Sequence Model
    Gated Recurrent Unit (GRU)公式简介
    RNN 入门教程 Part 4 – 实现 RNN-LSTM 和 GRU 模型
    List接口
    集合框架的接口
    接口的使用
    常量的定义
    接口的特性与定义
  • 原文地址:https://www.cnblogs.com/nb-blog/p/10475676.html
Copyright © 2011-2022 走看看