[英]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.