批量上传公钥到centos服务器

一直以来,都通过ssh-copy-id在手动上传公钥,想着如果有上千台服务器需要上传公钥的话,这个方法就行了。试着实现下批量上传公钥到服务器,介绍本人试的一个方法。

  • 先通过python脚本来试一台机器,python脚本如下:

#!/usr/bin/python

import sys 
import pexpect

ip = sys.argv[1]
password = sys.argv[2]
expect_list = ['(yes/no)', 'password:']

p = pexpect.spawn('ssh-copy-id %s' % ip)
try:
    while True:
        idx = p.expect(expect_list)
        print p.before + expect_list[idx],
        if idx == 0:
            print "yes"
            p.sendline('yes')
        elif idx == 1:
            print password
            p.sendline(password)
except pexpect.TIMEOUT:
    print >>sys.stderr, 'timeout'
except pexpect.EOF:
    print p.before
    print >>sys.stderr, '<the end>'

  使用方法: python sendpublic.py 192.168.2.10 password

  • 上面的python结合shell实现批量上传

把服务器的ip和密码列在一个txt文件中,例如(b.txt):

192.168.1.1 password1

192.168.1.2 password2

192.168.1.3 password3

下面是一个shell程序:

cat a.txt |while read line;do
	ip=`echo $line | awk '{print $1}' #提取ip
	password=`echo $line | awk '{print $2}'` #提取password
	python sendpublic.py $ip $password
done


如上所述,需要注意:

    a.txt的格式,第一个参数是ip,第二个是密码。中间用空格隔开,一般使用这个上批量上传公钥到服务器是没问题的。

    如果公钥没在默认位置的话,python脚本里面的这个语句p = pexpect.spawn('ssh-copy-id %s' % ip),把ssh-copy-id改为 ssh-copy-id -i 公钥位置 即可。
















转载于:https://my.oschina.net/zhuangweihong/blog/472127

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值