我正在使用带有SSH.NET的C#。
我想发出一个PWD命令,但找不到任何文档或帮助。我不知道如何使用'SshClient'类。
更新 我也尝试使用下面的代码试验SshClient类,但它什么也没做,既没有任何错误也没有任何异常。
ConnectionInfo ConnNfo = new ConnectionInfo("FTPHost", 22, "FTPUser",
new AuthenticationMethod[]{
// Pasword based Authentication
new PasswordAuthenticationMethod("FTPUser","FTPPass")
}
);
using (var ssh = new SshClient(ConnNfo))
{
ssh.Connect();
if (ssh.IsConnected)
{
string comm = "pwd";
using (var cmd = ssh.CreateCommand(comm))
{
var returned = cmd.Execute();
var output = cmd.Result;
var err = cmd.Error;
var stat = cmd.ExitStatus;
}
}
ssh.Disconnect();
}
什么都没发生。既不是错误也不是例外。在Visual Studio控制台上,我得到以下输出。
* SshNet.Logging详细:1:SendMessage到服务器'ChannelRequestMessage':'SSH_MSG_CHANNEL_REQUEST:#152199'。
SshNet.Logging详细:1:来自服务器的ReceiveMessage: 'ChannelFailureMessage':'SSH_MSG_CHANNEL_FAILURE:#0'。*
在ssh.RunCommand方法调用时,程序进入某种睡眠状态(或等待大约1分钟)。 sshCommand.Result和sshCommand.Error变量为空。
答案 0 :(得分:1)
这是一个简单的例子 - 一种方法。
string host = "myhost";
string user = "root";
string pwd = "#secret#!"; // Don't use hardcoded plain-text passwords if possible - for demonstration only.
using (PasswordAuthenticationMethod auth = new PasswordAuthenticationMethod(user, pwd))
{
ConnectionInfo connection = new ConnectionInfo(host, user, auth);
using (var ssh = new SshClient(connection))
{
ssh.Connect();
SshCommand sshCommand = ssh.RunCommand("pwd");
Console.WriteLine("Command execution result: {0}", sshCommand.Result);
}
}
请注意,如果指定了无效命令(例如“pwdxxxx”),则不会出现异常,但会出现错误,该错误将存储在SshCommand.Error
字符串中。
另请注意,这使用SSH PasswordAuthentication,这可能未在您的SSH配置中启用。
答案 1 :(得分:0)