• 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
  • 相关阅读:
    C++ string 类详解
    C语言 -- 字符串详解
    基本数据结构 -- 链表的遍历、查找、插入和删除
    Shell 基础 -- 总结几种括号、引号的用法
    用 C 语言描述几种排序算法
    Win10 + vs2017 编译并配置tesseract4.1.0
    前端如何引入vConsole
    php设计模式-数据对象映射模式
    PHP设计模式-策略模式
    PHP设计模式-适配器模式
  • 原文地址:https://www.cnblogs.com/nb-blog/p/10482295.html
Copyright © 2020-2023  润新知