expect 批量自动部署ssh 免密登陆 之 二

Posted nb-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于expect 批量自动部署ssh 免密登陆 之 二的主要内容,如果未能解决你的问题,请参考以下文章

expect检查ssh登陆对端是否免密

expect实现ssh自动登录

ssh免密验证,shell批量设置

关于Linux中批量配置SSH免密的一些笔记

关于Linux中批量配置SSH免密的一些笔记

关于Linux中批量配置SSH免密的一些笔记