鍍金池/ 問答/Python  Linux  網(wǎng)絡(luò)安全/ 如何用python批量分發(fā)本機的ssh公鑰?

如何用python批量分發(fā)本機的ssh公鑰?

當我們使用ansible工具,默認是通過ssh的方式來進行遠程控制。
需要使用類似 ssh-keygen -t rsa 的方式生成密鑰對
然后再用ssh-copy-id 命令,將公鑰文件分發(fā)給一臺遠程主機
然后輸入一次遠程主機的密碼,這樣便能使用ansible遠程控制主機

那么如何用python完成這項工作呢?
主要是為了完成這么這項任務(wù):

批量分發(fā)公鑰,記錄失敗的主機,刪除遠程主機上的密鑰信息等?

回答
編輯回答
尛曖昧

ansible 就可以完成你說的任務(wù)啊。
如果你想更多使用 python 代碼來控制流程,你可以使用另外一個自動化部署工具 fabric

2017年12月23日 12:13
編輯回答
淺淺
#!/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>'

已經(jīng)解決問題

2018年5月10日 00:37