为使用 SSH.NET SshClient.RunCommand 执行的命令 (cli) 提供输入/子命令

Zal*_*ode 3 .net c# ssh ssh.net juniper

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

client.RunCommand("cli");
Run Code Online (Sandbox Code Playgroud)

程序无限期地挂在这条线上。

对正在发生的事情有什么解释吗?

cli是在Juniper使用命令交换机/路由器。

Mar*_*ryl 5

AFAIK,cli是一种 shell/交互式程序。因此,我假设您已尝试执行以下操作:

client.RunCommand("cli");
client.RunCommand("some cli subcommand");
Run Code Online (Sandbox Code Playgroud)

那是错误的。cli将继续等待子命令并且永不退出,直到您使用相应的命令(如exit)明确关闭它。退出后,服务器将尝试将其cli subcommand作为单独的顶级命令执行,但也会失败。


您必须将“cli 子命令”提供给命令的输入cli。但不幸的是,SSH.NET 不支持通过SshClient.RunCommand/SshClient.CreateCommand接口提供输入。请参阅允许写入 SshCommand


有两种解决方案: