簡體   English   中英

為什么我不能使用subprocess.Popen與SSH交互?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM