Linux自动批量增加公钥

自动增加公钥

需求:

提示要输入对方的ip和root密码,然后可以自动把本机的公钥增加到对方机器上,从而实现密钥认证。

1.在使用之前,先安装epel源,yum install expect -y

2.写分发脚本,后缀为exp

#!/usr/bin/expect#!/bin/bash
#name:南宫乘风
#email:heian99@163.com
#自动添加公钥到指定的服务器
set host_ip [lindex $argv 0]
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $host_ip
expect {
        -timeout 60
        "(yes/no)?" { send "yes\n";exp_continue}
        "password:" { send "root\n"} #填写服务器的同一密码
        timeout {puts "Connect timeout!";return}
}
expect eof
exit -onexit {
        send_user "Job has finished!"
}

注:set的作用是设置变量,spawn设置执行命令时,可以引用变量;变量的第一个参数为0

编写ip.txt,存放ip地址

3.执行以下命令开始分发

for ip in `cat /root/ip.txt`;do expect /root/ssh.exp $ip ;done

如果密码不一样,也可以定义到ip.txt的文本里面,通过awk获取到。

然后传值给expect。可以实现不同ip和密码的自动批量秘钥传输。

posted @ 2020-03-30 13:41  南宫乘风  阅读(340)  评论(0编辑  收藏  举报