最初的 Unix 实现只是做了这样的事情:
ssh [batchname] < [inputfilename] > [outputfilename]
我需要能够从运行用 C# 编写的应用程序的 Windows 机器上做同样的事情。我试过使用 SharpSsh,它包括输入和输出流,但它们似乎不起作用。
如何使用 SharpSsh(或任何其他 .Net 库)管道输入和输出文件/流?
弄清楚了。正在运行的应用程序或 SSH 本身都需要一个 ctrl-d 来表示输入的结束。此时,可以读取输出流而无需挂起。
如果其他人正在寻找这个,请查看CliWrap。它使您可以非常轻松地运行流程和管道输入/输出。
await using var input = File.Open("input.txt");
await using var output = File.Create("output.txt");
await using var error = File.Create("error.txt");
var cmd = input | Cli.Wrap("child.exe").WithArguments("foo bar") | (output, error);
await cmd.ExecuteAsync();