首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为使用SSH.NET执行的命令提供子命令

为使用SSH.NET执行的命令提供子命令
EN

Stack Overflow用户
提问于 2017-11-28 23:18:14
回答 1查看 1.1K关注 0票数 1

我已经创建了一个简单的应用程序,它使用Renci.SshNet库来更新我的Fortigate设备上的防火墙配置。

代码语言:javascript
复制
var auth =
    new AuthenticationMethod[] { new PasswordAuthenticationMethod(username, password) };
ConnectionInfo ConnNfo = new ConnectionInfo(server, 22, username, auth);

sshclient.Connect();

string command;
string addressname = "testaddress";

command = "config firewall address";
output.Add(command);
output.Add(sshclient.CreateCommand(command).Execute());

command = string.Format(@"edit {0}", addressName);
output.Add(command);
output.Add(sshclient.CreateCommand(command).Execute());

sshclient.Disconnect();

我从输出中得到以下内容:

代码语言:javascript
复制
config firewall address
fw1 # fw1 (address) # 
edit testaddress
fw1 # Unknown action 0 fw1 # 

相同的命令可以在正常的SSH连接上正常工作。

代码语言:javascript
复制
fw1 # config firewall address
fw1 (address) # edit testaddress
new entry 'testaddress' added
fw1 (testaddress) #

只是想知道我是否正确地使用它发送单独的CreateCommans.Execute()

EN

回答 1

Stack Overflow用户

发布于 2017-11-28 23:49:41

如果我理解正确的话,edit testaddressconfig firewall address命令的一个子命令。

而您的代码将其作为单独的顶级命令执行。

您必须将edit testaddress子命令提供给config firewall address命令的输入。但不幸的是,SSH.NET不支持使用CreateCommand接口提供输入。

您必须打开一个shell会话(否则不推荐使用这种方法来自动执行命令)。

使用SshClient.CreateShellStreamSshClient.CreateShell并将命令发送到其输入:

代码语言:javascript
复制
"config firewall address\nedit testaddress\n"

有关示例代码,请参阅C# send Ctrl+Y over SSH.NET

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47534964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档