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

时间:2018-10-12 08:36:31

标签: c# .net ssh ssh.net avaya

我当前正在使用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

1 个答案:

答案 0 :(得分:0)

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

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

另外,使用伪终端发送诸如 Ctrl + Y 之类的控制序列更为复杂。但是再次,我们希望开关的“外壳”足够笨拙,可以简单地接受 Ctrl + Y 的纯ASCII码,即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);
}