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

    #!/usr/bin/expect -f
    ########################################## hutu
    #Push the id.pas.pub public key to the target server through the SSH service to implement secret-free login.
    #Define an iplist Create an iplist file in the current directory. The content format is: User Password IPaddress Port
    #parameter: 1.user
    #             2.password
    #           3.ip
    #           4.Por
    ##########################################
    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
        }
    }
    set ip_file [open ./iplist r]
    while {[gets $ip_file line] >= 0} {
        set user       [lindex $line 0]
        set password   [lindex $line 1]
        set ip          [lindex $line 2]
        set port        [lindex $line 3]
        spawn ping ${ip} -w 2
        expect {
             -nocase -re "100% packet loss" {
              send_error "Ping ${ip} is unreachable, Please check the IP address.
    "
              exit 1
             }
            }
        spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user@$ip
        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 "$password
    "
                }
                #already has public key in ~/.ssh/known_hosts
                "password:" {
                send "$password
    "
                }
            }
        puts "User: $user,	Password: xxxx,	IP: $ip,	Port: $port
    "
    }
    close $ip_file
  • 相关阅读:
    常用函数
    小工具
    javascript实现的平方米、亩、公顷单位换算小程序
    在spring boot 项目中使用thymeleaf模板
    IntellJ IDEA 中JAVA代码的任务标记(TODO、FIXME、【XXX】)
    XMPP学习
    iOS绘图教程(个人学习总结)
    iOS: #ifdef DEBUG
    iphone sdk版本宏
    xmpp
  • 原文地址:https://www.cnblogs.com/nb-blog/p/10482295.html
Copyright © 2011-2022 走看看