簡體   English   中英

Paramiko 和“遠程蟒蛇”

[英]Paramiko and “remote python”

我希望能夠通過 SSH 連接控制遠程 Python 解釋器,並從 Python 本身驅動它。

我有一個基本模板:

ssh.connect(servername, serverport, username,  key_filename=key_filename)

transport = ssh.get_transport()
channel = transport.open_session()

channel.exec_command(PATH_TO_EXEC)

while True:
    r, w, e = select.select([channel], [], [], 1)
    if channel in r:
        try:
            if channel.recv_ready():
                x = channel.recv(64)
            elif channel.recv_stderr_ready():
                x = channel.recv_stderr(64)
            else:
                continue

            if len(x) == 0:
                print '\r\n*** EOF\r\n',
                break
            sys.stdout.write(x)
            sys.stdout.flush()
        except socket.timeout:
            pass

這使我可以使用pdb與遠程應用程序對話: channel.set("command\n")

It works perfectly with bash , with gdb , but there is nothing I can do to get an output stream from python (v2)

Python 如何處理它的 output stream,為什么我的代碼不起作用?

根據您的目標,您可以采用這兩種方式中的一種(不過,我相信還有其他幾種選擇。)。

如果你想通過 python 控制遠程機器上腳本的執行,你可以試試Fabric 從他們的網站:

Fabric 是一個 Python(2.5 或更高版本)庫和命令行工具,用於簡化 SSH 在應用程序部署或系統管理任務中的使用。 它提供了一套基本的操作,用於執行本地或遠程 shell 命令(通常或通過 sudo)和上傳/下載文件,以及提示運行用戶輸入或中止執行等輔助功能。

如果你想控制遠程進程並將它們的 output 集成到你的主程序流中,你可以使用multiprocessing 模塊 來自PEP 371

package 還提供服務器和客戶端功能 (processing.Manager) 以提供對象和任務的遠程共享和管理,以便應用程序不僅可以利用本地計算機上的多個內核,還可以跨聯網計算機集群分發對象和任務。

除非這是一個學術練習,或者您有使用 ssh 的特定要求,請查看pushy 我從未使用過它,但它看起來很成熟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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