C#通过SSH.NET发送Ctrl + Y.

我目前正在使用SSH.net并尝试连接到Avaya交换机。

我的代码如下所示:

using (var client = new SshClient(ip, username, password)) { client.Connect(); //Sending CTRL+Y SshCommand x = client.RunCommand("enable"); client.Disconnect(); } 

我还没有找到解决方案。

是否有任何解决方法或命令可用于发送我的CTRL + Y

SSH.NET不支持向使用SshClient.RunCommand (“exec”通道)执行的命令发送输入。

您必须使用“shell”通道( SshClient.CreateShellSshClient.CreateShellStream )。 通常不建议将其用于命令自动化。 使用SSH.NET更是如此,它甚至不允许你关闭“shell”频道的伪终端。 这带来了许多令人讨厌的副作用,尤其是Linux上的“智能”shell。 但是设备喜欢交换机,它可能是可以忍受的。

特别是发送像Ctrl + Y这样的控制序列对伪终端来说更复杂。 但是,再次,让我们希望开关的“shell”足够简单,只需接受一个纯粹的ASCII cide for Ctrl + Y ,即25 = x19。

 ShellStream shellStream = client.CreateShellStream(string.Empty, 0, 0, 0, 0, 0); shellStream.Write("enable\n"); shellStream.Write("\u19"); while (true) { string s = shellStream.Read(); Console.Write(s); }