特定的运行时环境命令不会;不能在SSH.NET中工作

本文关键字:不能 SSH NET 工作 运行时 环境 命令 | 更新日期: 2023-09-27 18:23:40

我正在使用SSH.NET连接(使用用户名+密码)到服务器并运行一些命令。连接到服务器是为了通过Cisco应用程序控制软件管理某些组件,但这并不重要,因为命令是按原样发送的。

连接到服务器运行良好,所有其他命令也运行,但有两个特定的命令不起作用,我似乎不明白为什么
失败的命令有:changeto Productionterminal length 0
我的代码非常简单(简化了问题,但流程相同):

using (var client = new SshClient(serverIP, port, username, password)
{
    client.Connect();
    var cmd = Client.RunCommand("terminal length 0");
    cmd = client.RunCommand("changeto Production");
    // Other command follow
}

当通过putty运行相同的命令时,它是有效的,不,changeto不应该是change to
我认为这里的问题是通过代码更改范围(更改为生产),但不明白为什么。

任何帮助都将不胜感激。

特定的运行时环境命令不会;不能在SSH.NET中工作

在SSH.NET库的CodePlex论坛上搜索并询问后,我理解了问题:RunCommand()函数每次调用都会创建一个新的shell
新的shell是用默认环境创建的,由于terminal length 0changeto Production会更改以下命令的运行时环境,所以这无法用RunCommand()来实现
最后,我直接从shell流中编写和读取(使用SshClient.CreateShellStream()),并使用Expect()来获取和解析所需的输出。这样,所有命令都在同一个shell中执行。