使用SharpSSh和SshExec类时,我无法使RunCommand工作,它总是返回一个空字符串。当我调试SharpSsh库时,它在尝试从流中读取命令时返回-1。它在我在同一个库中使用sftp类时有效,但该类不支持我需要的所有ftp命令。
这是一个标准的例子,我无法得到正确的结果
SshConnectionInfo input = Util.GetInput();
SshExec exec = new SshExec(input.Host, input.User);
if(input.Pass != null) exec.Password = input.Pass;
if(input.IdentityFile != null) exec.AddIdentityFile( input.IdentityFile );
Console.Write("Connecting...");
exec.Connect();
Console.WriteLine("OK");
while(true)
{
Console.Write("Enter a command to execute ['Enter' to cancel]: ");
string command = Console.ReadLine();
if(command=="")break;
string output = exec.RunCommand(command);
Console.WriteLine(output);
}
Console.Write("Disconnecting...");
exec.Close();
Console.WriteLine("OK");
关于如何让RunCommand函数运行某些命令的任何想法? 感谢您的帮助:))
答案 0 :(得分:1)
从.RunCommand获取标准输出和错误流, 我将重复我发布的答案:SharpSSH - SSHExec, run command, and wait 5 seconds for data!
您可能想尝试以下重载:
SshExec exec = new SshExec("192.168.0.1", "admin", "haha");
exec.Connect();
string stdOut = null;
string stdError = null;
exec.RunCommand("interface wireless scan wlan1 duration=5", ref stdOut, ref stdError);
Console.WriteLine(stdOut);
exec.Close();
如果他们的API符合名称的含义,它应该将命令的标准输出放在stdOut中,标准错误放在stdError中。
有关标准流的详细信息,请查看:http://en.wikipedia.org/wiki/Standard_streams