【问题标题】:Providing input/subcommands to a command (cli) executed with SSH.NET SshClient.RunCommand为使用 SSH.NET SshClient.RunCommand 执行的命令 (cli) 提供输入/子命令
【发布时间】:2019-08-26 23:43:09
【问题描述】:

我使用 Renci SSH.NET 库创建了一个程序。它发送所有命令并正常读取结果。但是,当我发送以下命令时:

client.RunCommand("cli");

程序无限期地挂在这一行。

对发生的事情有任何解释吗?

cli 是用于瞻博网络交换机/路由器的命令。

【问题讨论】:

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


    【解决方案1】:

    AFAIK,cli 是一种 shell/交互式程序。所以我假设你已经尝试做类似的事情:

    client.RunCommand("cli");
    client.RunCommand("some cli subcommand");
    

    错了。 cli 将继续等待子命令并且永远不会退出,直到您使用相应的命令(如 exit)明确关闭它。并且退出后,服务器会尝试将cli subcommand作为单独的*命令执行,同样失败。


    您必须将“cli 子命令”提供给cli 命令的输入。但遗憾的是 SSH.NET 不支持使用 SshClient.RunCommand/SshClient.CreateCommand 接口提供输入。见Allow writing to SshCommand


    有两种解决方案:

    【讨论】:

    • 谢谢。 ShellStream 在子命令的情况下工作得很好
    最近更新 更多