SSH.NET不处理我的Shell输入命令我想从我自己的流发送文本,通过StreamWriter写入。问题是它什么都不做。就像WriteLine("ls")不会有任何效果。这是代码:使用系统;使用System.IO;使用Renci.SshNet;命名空间SSHTest{类程序{staticvoidMain(string[]args){varssh=newSshClient("raspberrypi",22,"pi","raspberry");ssh.连接();varinput=newMemoryStream();varstreamWriter=newStreamWriter(input){AutoFlush=true};varshell=ssh.CreateShell(输入,Console.OpenStandardOutput(),newMemoryStream());壳.开始();streamWriter.WriteLine("ls");while(true){}}}}怎么了?提前致谢:)MemoryStream不是实现输入流的好类。当您写入MemoryStream时,与大多数流实现一样,它的指针移动到写入数据的末尾。因此,当SSH.NET通道尝试读取数据时,它没有任何数据可读取。您可以将指针向后移动:streamWriter.WriteLine("ls");输入.位置=0;但正确的方法是使用来自SSH.NET的PipeStream,它具有单独的读写指针(就像*nix管道一样):varinput=newPipeStream();另一种选择是使用专为此类任务设计的SshClient.CreateShellStream(ShellStream类)。它为您提供了一个可以写入和读取的Stream接口。另请参阅是否可以使用SSH.NET从单个登录会话执行多个SSH命令?尽管SshClient.CreateShell(SSH“shell”通道)不是自动执行命令的正确方法。使用“执行”频道。对于简单的情况,使用SshClient.RunCommand。如果想连续读取命令输出,请使用SshClient.CreateCommand获取命令输出流:以上是C#学习教程:SSH.NET不处理我的shell输入命令分享的全部内容,如果有用给大家,需要了解更多关于C#学习教程,希望大家多多关注——varcommand=ssh.CreateCommand("ls");varasyncExecute=command.BeginExecute();命令.OutputStream.CopyTo(Console.OpenStandardOutput());命令.EndExecute(asyncExecute);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
