在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

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

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

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

回答
編輯回答
尛曖昧

ansible 就可以完成你說(shuō)的任務(wù)啊。
如果你想更多使用 python 代碼來(lái)控制流程,你可以使用另外一個(gè)自動(dòng)化部署工具 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)解決問(wèn)題

2018年5月10日 00:37