如何用python批量分发本机的ssh公钥?

当我们使用ansible工具,默认是通过ssh的方式来进行远程控制。
需要使用类似 ssh-keygen -t rsa 的方式生成密钥对
然后再用ssh-copy-id 命令,将公钥文件分发给一台远程主机
然后输入一次远程主机的密码,这样便能使用ansible远程控制主机

那么如何用python完成这项工作呢?
主要是为了完成这么这项任务:

批量分发公钥,记录失败的主机,删除远程主机上的密钥信息等?

阅读 3.9k
2 个回答
#!/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>'

已经解决问题

ansible 就可以完成你说的任务啊。
如果你想更多使用 python 代码来控制流程,你可以使用另外一个自动化部署工具 fabric

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题