[英]Python Paramiko - wait on more output from passed command before exiting
我有以下代碼
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.client.AutoAddPolicy())
privatekeyfile = 'PK_FILE_PATH'
username ="USERNAME"
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
client.connect(hostname= IP, username=username, pkey=mykey)
command = SERVER_COMMAND
stdin, stdout, stderr = client.exec_command(command)
while not stdout.channel.exit_status_ready():
if stdout.channel.recv_ready():
stdoutLines = stdout.readlines()
print stdoutLines
我正在執行的命令大約需要10秒鍾才能在服務器上運行。 它首先返回一些信息(用戶配置文件和模塊版本),然后運行一些代碼以檢查某些本地服務器資源的狀態。
收到初始標頭信息后,Paramiko將關閉連接。 我需要它來等待serverside命令的完整輸出返回。 我嘗試在這里實施丁丁解決方案,結果相同
有任何想法嗎?
收到初始標頭信息后,Paramiko將關閉連接。
我認為那不是真的。 嘗試運行類似的命令
command = 'echo first && sleep 60 && echo second'
while not stdout.channel.exit_status_ready():
if stdout.channel.recv_ready():
stdoutLines = stdout.readlines()
print stdoutLines
您將看到兩行(還要注意,我正在循環中打印行,因此您可以看到行)。
您的命令必須包含某些內容,例如:
stderr
,而不是stdout
。 add get_pty=True
這將等待命令執行完成。 stdin,stdout,stderr = self.ssh.exec_command(command,get_pty=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.