python - 通过 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
.
解决方案
PuTTY 是一个 GUI 应用程序,它不使用标准输入。它不适用于自动化。对于自动化,您可以使用 Plink,它是 PuTTY 的控制台等价物。
另请参阅将 PuTTY 控制台通过管道传输到 Python 脚本
虽然你应该使用 Paramiko。它不会显示/打印诸如 "top" 之类的命令的输出。这不是它的用途。您必须将其连接到终端才能实现您想要的。请参阅在 Paramiko 中运行交互式命令。
或者对于自动化,您最好以top
非交互方式运行。请参阅您的其他问题Collect output from top command using Paramiko in Python。
推荐阅读
- python - Python 3.7.3 错误:ModuleNotFoundError:没有名为“Pages”的模块
- amazon-web-services - Terraform 模块和提供程序
- c# - 将 BigInteger 除以常数的更快方法
- javascript - 忽略长 js 测试描述的模式
- database - mongod:无法取消链接套接字文件
- apache-kafka - 如何设计实时股价的发布/订阅架构
- python-3.x - 数据框:基于上方单元格和左侧单元格的计算行
- html - 如何在服务仍在获取响应时显示进度条
- python - 使用烧瓶无法在网站上看到任何消息
- jquery - 有没有办法用 jquery 或 js 在动态列表项中显示 div