无法在 Cisco WLC 上使用 SSH.NET 执行命令
Cannot execute command with SSH.NET on Cisco WLC
正在尝试使用 SSH.NET 连接到 Cisco 无线控制器并向其添加 mac 地址。当我调试我的代码时,我在客户端的 IsConnected
属性 上得到一个 true
,但是当我登录到控制器本身并执行“Show loginsession”时,我没有看到列出假定的连接。
此外,当我到达 var result = client.RunCommand(comman.ToString()).Result;
时,代码只是挂起,根本没有任何响应。离开几分钟,没有超时或 return 任何类型的错误。
执行上述行时的 PuTTY 会话图片
我们使用什么 "login as".
并不重要
public WebAPIEndPoint Put(WebAPIEndPoint console)
{
var auth = new PasswordAuthenticationMethod("UserName", "Password");
var connectionInfo = new ConnectionInfo(hostIP, 22, "UserName", auth);
using (var client = new SshClient(connectionInfo))
{
client.Connect();
var command =
client.CreateCommand("config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234");
var result = client.RunCommand(comman.ToString()).Result;
Console.WriteLine(result);
client.Disconnect();
return console;
}
}
当运行 plink user@host config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234
时,我得到:
FATAL ERROR: Server refused to start a shell/command.
您的服务器似乎不支持 SSH“exec”通道。所以你不能使用 CreateCommand
/RunCommand
.
您必须使用“shell”频道(SshClient.CreateShell
或 SshClient.CreateShellStream
)。这通常不推荐用于命令自动化。 SSH.NET 更是如此,它甚至不允许您关闭“shell”频道的伪终端。这会带来许多令人讨厌的副作用,尤其是 Linux 上的“智能”shells。但是对于像您这样的设备,它可能是可以忍受的,也是唯一的解决方案。
ShellStream shellStream = client.CreateShellStream(string.Empty, 0, 0, 0, 0, 0);
shellStream.Write("username\n");
shellStream.Write("password\n");
shellStream.Write("config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234\n");
正在尝试使用 SSH.NET 连接到 Cisco 无线控制器并向其添加 mac 地址。当我调试我的代码时,我在客户端的 IsConnected
属性 上得到一个 true
,但是当我登录到控制器本身并执行“Show loginsession”时,我没有看到列出假定的连接。
此外,当我到达 var result = client.RunCommand(comman.ToString()).Result;
时,代码只是挂起,根本没有任何响应。离开几分钟,没有超时或 return 任何类型的错误。
执行上述行时的 PuTTY 会话图片
我们使用什么 "login as".
并不重要public WebAPIEndPoint Put(WebAPIEndPoint console)
{
var auth = new PasswordAuthenticationMethod("UserName", "Password");
var connectionInfo = new ConnectionInfo(hostIP, 22, "UserName", auth);
using (var client = new SshClient(connectionInfo))
{
client.Connect();
var command =
client.CreateCommand("config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234");
var result = client.RunCommand(comman.ToString()).Result;
Console.WriteLine(result);
client.Disconnect();
return console;
}
}
当运行 plink user@host config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234
时,我得到:
FATAL ERROR: Server refused to start a shell/command.
您的服务器似乎不支持 SSH“exec”通道。所以你不能使用 CreateCommand
/RunCommand
.
您必须使用“shell”频道(SshClient.CreateShell
或 SshClient.CreateShellStream
)。这通常不推荐用于命令自动化。 SSH.NET 更是如此,它甚至不允许您关闭“shell”频道的伪终端。这会带来许多令人讨厌的副作用,尤其是 Linux 上的“智能”shells。但是对于像您这样的设备,它可能是可以忍受的,也是唯一的解决方案。
ShellStream shellStream = client.CreateShellStream(string.Empty, 0, 0, 0, 0, 0);
shellStream.Write("username\n");
shellStream.Write("password\n");
shellStream.Write("config macfilter add 00:17:ab:ea:d4:aa 5 0 Testing1234\n");