c# - 如何在本地控制台上使用 C# SSH.NET 执行的远程主机 (Raspberry Pi) 上运行的 Python 程序连续写入输出?

标签 c# python terminal raspberry-pi ssh.net

我正在我的计算机上用 C# 编写一个程序,该程序应该在远程 Raspberry Pi 上启动 Python 程序。目前,Python 代码只是每秒打印 'Hello' 。该程序应该永久运行。当我从 C# 启动此程序时,如果我的程序正在运行,我希望获得视觉反馈 - 我希望看到像 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());
    }
}

最佳答案

SSH.NET SshClient.CreateCommand 不使用终端仿真。

在没有终端仿真的情况下执行时,Python 会缓冲输出。所以你最终会得到输出,但只有在缓冲区填满之后。

要防止缓冲,请添加 -u switchpython命令行:

var command = ssh.CreateCommand("python3 -u test.py");

关于c# - 如何在本地控制台上使用 C# SSH.NET 执行的远程主机 (Raspberry Pi) 上运行的 Python 程序连续写入输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609499/

相关文章:

c# - 如何在 ASP.net 中使用 gridview 单击一次按钮更新多行?

c# - 工作坊 4.5。将 C# 表达式与外部类引用一起使用

python - wxpython:我将如何配置一个 box sizer 以便它有一个中心列在调整大小时移动,但不会改变尺寸(里面的图片解释)

node.js - Mac-bash : node: command not found

c# - 如何读取 web.config 文件中的 appSettings 部分?

c# - 使用 asp.net mvc 为不同的用户类型提供不同的启动布局

python - 如何从边列表中构建面列表,并使顶点顺序一致?

python - 模型表单在 django 中的外键上崩溃

iphone - 如何构建类似 iPad App 的终端

c++ - 我可以在没有 tputs 或 putp 的情况下使用 tparm()