如何在本地控制台上使用 C# SSH.NET 执行远程主机 (Raspberry Pi) 上的 Python 程序 运行 连续写入输出?
How to continuously write output from Python Program running on a remote host (Raspberry Pi) executed with C# SSH.NET on local console?
我正在我的计算机上用 C# 编写一个程序,它应该在远程 Raspberry Pi 上启动一个 Python 程序。目前 Python 代码每秒打印 'Hello'
。该程序应该 运行 永久。当我从 C# 启动这个程序时,如果我的程序是 运行ning,我希望得到一个视觉反馈——我希望看到像 PuTTY 中那样的打印输出。
以下代码适用于 ls
这样的命令。但是由于我的 Python 程序 test.py
不应该完成——我从来没有得到输出——我陷入了一个连续的循环。
如何实时显示输出?
这是我的代码:
using Renci.SshNet;
static void Main(string[] args)
{
var ssh = new SshClient("rpi", 22, "pi", "password");
ssh.Connect();
var command = ssh.CreateCommand("python3 test.py");
var asyncExecute = command.BeginExecute();
while (true)
{
command.OutputStream.CopyTo(Console.OpenStandardOutput());
}
}
如果您想要本地主机上远程程序的输出,远程程序 ("test.py") 将必须与您的本地主机对话。本地主机 运行 你的 c# 程序可以在收到来自 RPi 的消息时打印一些东西。
通常,在 RPi 上启动 test.py 后,您可以向本地主机发送一条消息,例如 "Started" 或“0”,或任何您想要的。
如果您有一个活动的 SSH window 运行 test.py,您可以直接从 RPi 打印到它。
SSH.NET SshClient.CreateCommand
不使用终端仿真。
Python 在没有终端仿真的情况下执行时缓冲输出。所以你最终会得到输出,但只有在缓冲区填满之后。
要防止缓冲,请将 -u
switch 添加到 python
命令行:
var command = ssh.CreateCommand("python3 -u test.py");
我正在我的计算机上用 C# 编写一个程序,它应该在远程 Raspberry Pi 上启动一个 Python 程序。目前 Python 代码每秒打印 'Hello'
。该程序应该 运行 永久。当我从 C# 启动这个程序时,如果我的程序是 运行ning,我希望得到一个视觉反馈——我希望看到像 PuTTY 中那样的打印输出。
以下代码适用于 ls
这样的命令。但是由于我的 Python 程序 test.py
不应该完成——我从来没有得到输出——我陷入了一个连续的循环。
如何实时显示输出?
这是我的代码:
using Renci.SshNet;
static void Main(string[] args)
{
var ssh = new SshClient("rpi", 22, "pi", "password");
ssh.Connect();
var command = ssh.CreateCommand("python3 test.py");
var asyncExecute = command.BeginExecute();
while (true)
{
command.OutputStream.CopyTo(Console.OpenStandardOutput());
}
}
如果您想要本地主机上远程程序的输出,远程程序 ("test.py") 将必须与您的本地主机对话。本地主机 运行 你的 c# 程序可以在收到来自 RPi 的消息时打印一些东西。 通常,在 RPi 上启动 test.py 后,您可以向本地主机发送一条消息,例如 "Started" 或“0”,或任何您想要的。
如果您有一个活动的 SSH window 运行 test.py,您可以直接从 RPi 打印到它。
SSH.NET SshClient.CreateCommand
不使用终端仿真。
Python 在没有终端仿真的情况下执行时缓冲输出。所以你最终会得到输出,但只有在缓冲区填满之后。
要防止缓冲,请将 -u
switch 添加到 python
命令行:
var command = ssh.CreateCommand("python3 -u test.py");