expect 的灵活使用,实现自动拷贝 /root/.ssh/authorized_keys

来源:互联网 发布:淘宝客怎么注册买家 编辑:程序博客网 时间:2024/05/17 11:35
#!/bin/bashsrc_host=$1src_username=$2src_passwd=$3dst_host=$4dst_username=$5dst_passwd=$6#在远程主机1上生成公私钥对Keygen(){expect << EOFspawn ssh $src_username@$src_host ssh-keygen -t rsawhile 1 {        expect {                        "password:" {                                        send "$src_passwd\n"                        }                        "yes/no*" {                                        send "yes\n"                        }                        "Enter file in which to save the key*" {                                        send "\n"                        }                        "Enter passphrase*" {                                        send "\n"                        }                        "Enter same passphrase again:" {                                        send "\n"                                        }                        "Overwrite (y/n)" {                                        send "n\n"                        }                        eof {                                   exit                        }        }}EOF}#从远程主机1获取公钥保存到本地Get_pub(){expect << EOFspawn scp $src_username@$src_host:~/.ssh/id_rsa.pub /tmpexpect {             "password:" {                            send "$src_passwd\n";exp_continue                }                "yes/no*" {                            send "yes\n";exp_continue                }                   eof {                                exit                }}EOF}#将公钥的内容附加到远程主机2的authorized_keysPut_pub(){src_pub="$(cat /tmp/id_rsa.pub)"expect << EOFspawn ssh $dst_username@$dst_host "chmod 700 ~/.ssh;echo $src_pub >> ~/.ssh/authorized_keys;chmod 600 ~/.ssh/authorized_keys"expect {            "password:" {                        send "$dst_passwd\n";exp_continue             }            "yes/no*" {                        send "yes\n";exp_continue             }               eof {                        exit             } }EOF}KeygenGet_pubPut_pub脚本主要由3个expect组成,比较简单,用法是./ssh_trust.sh host1 user1 passwd1 host2 user2 passwd2即建立从user1@host1到user2@host2的ssh信任。说明:1、当然得安装expect2、脚本放在第三方机器(能远程登录host1和host2)上运行即可,当然放在host1和host2上运行也行。3、如果想批量建立信任,可以编辑一个文件夹file如:host1 user1 passwd1 host2 user2 passwd2host3 user3 passwd3 host4 user4 passwd4host5 user5 passwd5 host6 user6 passwd6使用下面命令执行脚本即可:xargs -n6 ./ssh_trust.sh < file4、仓促写的,脚本只是简单实现功能,使用前确保参数的可用性(用户密码主机名),不然很容易报错 
原创粉丝点击