expect 批量自动部署ssh 免密登陆
发布时间:2020-12-14 04:38:35 所属栏目:大数据 来源:网络整理
导读:? ? [[email?protected] ssh] # cat auto_ssh.sh # !/usr/bin/expect -f # ######################################### # 通过SSH服务将id.pas.pub公钥推送到目标服务器实现免密登陆 # 参数:1.system_username # 2.system_password # 3.system_hostname # 4.
? ? [[email?protected] 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:n" send_user "$name system_username system_password system_hostname CommandListn" 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.n" exit 1 } } #超时时间 set timeout 60 set resssh 0 spawn ssh-keygen -t rsa expect { "*file in which to save the key*" { send "nr" send_user "/root/.sshr" exp_continue "*Overwrite (y/n)*"{ send "nnr" } } "*Enter passphrase*" { send "nr" exp_continue } "*Enter same passphrase again*" { send "nr" 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 "yesr" expect "password:" send "$system_passwordr" } #already has public key in ~/.ssh/known_hosts "password:" { send "$system_passwordr" } "Now try logging into the machine" { #it has authorized,do nothing! } } expect eof (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |