2011-12-22 130 views
3

我創建一個用戶,並要設置SSH密鑰對用戶掛的paramiko當使用ssh-keygen命令

我的劇本是

import paramiko 

ssh_conn = paramiko.SSHClient() 
ssh_conn.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh_conn.load_system_host_keys() 
ssh_conn.connect('localhost', username='test', password='test') 

cmd = 'ssh-keygen -t dsa' 

stdin, stdout, stderr = ssh_conn.exec_command(cmd) 
stdin.write('\n') 
stdin.flush() 
stdin.write('\n') 
stdin.flush() 
stdin.write('\n') 
stdin.flush() 

print "Output: ", stdout.read() 

但它似乎不工作

當我將它作爲單個語句在python控制檯上覆制過去,然後運行,但是當我將它作爲單個python腳本運行時,它掛在最後一行print "Output: ", stdout.read()

THX在您的幫助:)

回答

5

試圖讀取stdout問題之前:

stdin.channel.shutdown_write() 

this question參見參考。

+0

Thx @mac求助 – Nilesh

+1

嗨@mac如果我不會在'stdin.channel.shutdown_write()'後面寫'stdout.read()'並執行一些其他任務,那麼它將不會生成.pub文件那時候。手段是否有任何方法來檢查命令完成其執行? – Nilesh

相關問題