【问题标题】:C# send Ctrl+Y over SSH.NETC# 通过 SSH.NET 发送 Ctrl+Y
【发布时间】:2019-03-17 10:44:08
【问题描述】:

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

【问题讨论】:

  • 您必须捕获“ctrl+Y”发送的内容,然后手动发送

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


【解决方案1】:

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

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

还特别是发送控制序列像 Ctrl+Y 是更复杂的伪终端。但同样,我们希望开关的“外壳”足够愚蠢,可以简单地接受 Ctrl+Y 的纯 ASCII cide,即 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);
}

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2015-11-27
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多