SharpSSh: RunCommand в SshExec всегда возвращает пустую строку - PullRequest
0 голосов
/ 21 июня 2010

При использовании 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 запускать некоторые команды? Спасибо за любую помощь:)

1 Ответ

1 голос
/ 25 октября 2010

Чтобы получить стандартный поток вывода и ошибок из .RunCommand, я повторю ответ, который я отправил: SharpSSH - SSHExec, выполните команду и подождите 5 секунд данных!

Возможно, вы захотите попробовать следующую перегрузку:

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

...