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
  • 相关阅读:
    js实现快速排序(in-place)简述
    手把手原生js简单轮播图
    基于superagent 与 cheerio 的node简单爬虫
    浅谈HTTP事务的一个过程
    css小技巧
    DesignPatternPrinciple(设计模式原则)二
    DesignPatternPrinciple(设计模式原则)一
    Attribute(特性)与AOP
    Thread(线程)四
    Thread(线程)三
  • 原文地址:https://www.cnblogs.com/nb-blog/p/10482295.html
Copyright © 2011-2022 走看看