通过 Python subprocess.Popen(或 Paramiko 会话)和 运行 数量的 shell 命令(如 "top")打开 PuTTY window window
Open a PuTTY window via Python subprocess.Popen (or Paramiko session) and run number of shell commands (like "top") in the same window
我想打开一个 PuTTY window,登录到某个服务器,然后立即输入一些命令,最后保存输出。我想看到 PuTTY window 打开以及我正在通过程序执行的所有 activity(因此需要 PuTTY GUI)。
这是我尝试过的:
我可以打开一个新的 window 并登录。但是使用 stdin.write
我无法在同一个 window 中输入更多命令。我在这里做错了什么?我对 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,但不想使用它,因为它无法 display/print 像 top
.
这样的命令的输出
PuTTY 是一个 GUI 应用程序,它不使用标准输入。它不适用于自动化。对于自动化,您可以使用 Plink,它是相当于 PuTTY 的控制台。
另见
虽然你应该使用 Paramiko。它不会 无法 display/print 像“top” 这样的命令的输出。这不是它的目的。你必须将它连接到终端才能实现你想要的。参见 Running interactive commands in Paramiko。
或者对于自动化,您最好 运行 top
非交互式。请参阅您的其他问题 。
我想打开一个 PuTTY window,登录到某个服务器,然后立即输入一些命令,最后保存输出。我想看到 PuTTY window 打开以及我正在通过程序执行的所有 activity(因此需要 PuTTY GUI)。
这是我尝试过的:
我可以打开一个新的 window 并登录。但是使用 stdin.write
我无法在同一个 window 中输入更多命令。我在这里做错了什么?我对 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,但不想使用它,因为它无法 display/print 像 top
.
PuTTY 是一个 GUI 应用程序,它不使用标准输入。它不适用于自动化。对于自动化,您可以使用 Plink,它是相当于 PuTTY 的控制台。
另见
虽然你应该使用 Paramiko。它不会 无法 display/print 像“top” 这样的命令的输出。这不是它的目的。你必须将它连接到终端才能实现你想要的。参见 Running interactive commands in Paramiko。
或者对于自动化,您最好 运行 top
非交互式。请参阅您的其他问题