繁体   English   中英

在 C# 中使用 SSH.NET 仅读取命令输出的前几行,而无需等待命令完全完成

[英]Read only first few lines of command output without waiting for the command to finish completely with SSH.NET in C#

我一直在使用 SSH.NET 来满足我所有的后端需求,但我最近一直在解决这个问题。

我要执行的命令被设计为连续运行,只能手动终止(例如通过Ctrl+C ),并且它会定期输出一些输出。 我的目标是只获取第一个输出(或前几个,对我来说无关紧要)。

通过 SSH.NET,我还没有找到完成这项工作的好方法。 我最近尝试使用System.Threading.Tasks来使命令超时,但命令执行并不关心超时并且无论如何仍然运行。

这是我希望能够工作的代码:

string Output;
using (var client = new SshClient(SSHHost, 22, SSHUSER, SSHWORD))
{
    client.Connect();
    SshCommand CmdInstance = client.CreateCommand(Command);
    var NonTerm = Task.Run(() => CmdInstance.Execute());
    if (NonTerm.Wait(TimeSpan.FromSeconds(timeout)))
        Console.Write(NonTerm.Result);
    Output = NonTerm.Result;
    client.Disconnect();
}
return Output;

虽然您可以肯定地使用 SSH.NET 实现这一点,但我相信在服务器端执行此操作会更有效且更容易实现。

请参阅如何在一定数量的输出后终止脚本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM