首页 > 解决方案 > 通过 Python subprocess.Popen(或 Paramiko 会话)打开一个 PuTTY 窗口并在同一窗口中运行多个 shell 命令(如“top”)

问题描述

我想打开一个 PuTTY 窗口,登录到某个服务器,然后立即输入一些命令,最后保存输出。我想看到 PuTTY 窗口打开以及我通过程序执行的所有活动(因此需要 PuTTY GUI)。

这是我尝试过的:我可以打开一个新窗口并登录。但是使用stdin.write我无法在同一窗口中输入更多命令。我在这里做错了什么?我对python很陌生。请帮忙。

import subprocess
from subprocess import Popen, PIPE, STDOUT

p = subprocess.Popen("putty.exe demo@Test.Rebex.Net -pw password", stdout=PIPE, stdin=PIPE, stderr=STDOUT)
p.stdin.write("ls".encode("utf-8"))
print(p.stdout.readlines())

我已经尝试过 Paramiko,但不想使用它,因为它无法显示/打印命令的输出,例如top.

标签: pythonpython-3.xsshsubprocessputty

解决方案


PuTTY 是一个 GUI 应用程序,它不使用标准输入。它不适用于自动化。对于自动化,您可以使用 Plink,它是 PuTTY 的控制台等价物。
另请参阅将 PuTTY 控制台通过管道传输到 Python 脚本


虽然你应该使用 Paramiko。它不会显示/打印诸如 "top" 之类的命令的输出。这不是它的用途。您必须将其连接到终端才能实现您想要的。请参阅在 Paramiko 中运行交互式命令

或者对于自动化,您最好以top非交互方式运行。请参阅您的其他问题Collect output from top command using Paramiko in Python


推荐阅读