[英]Why can't I interact with SSH using subprocess.Popen?
我正在嘗試使用Python的subprocess
庫與SSH進行交互。 這是我當前的代碼:
import subprocess
import time
proc = subprocess.Popen(["ssh", "-tt", "user@host"],
stdout=subprocess.PIPE, stdin=subprocess.PIPE)
time.sleep(10)
proc.stdin.write(b"ls\n")
while True:
next_line = proc.stdout.readline()
if next_line != '':
print(next_line.decode("utf-8"), end='')
else:
time.sleep(.01)
當我運行它時,我得到了通常的SSH安全性標語,但除此之外沒有別的。 我通過公共密鑰登錄,並且已經將主機添加到我的known_hosts列表中,因此我認為身份驗證應該不是問題。 通過將ls
更改為將文本寫入文件的命令,我已經確認沒有命令在“通過”。 有什么問題,我該如何解決?
您可能需要調用proc.stdin.flush()
。 更一般而言,您應該改為使用Paramiko (這是直接用於SSH的Python庫),而不是為此使用Popen。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.