Я пытаюсь запустить команду на удаленном сервере через SSH.
Мне нужен результат выполнения команды для сохранения в файле на этом удаленном сервере.
Я пытался сделать это следующим образом
// ssh is the SshClient which is already set up
ssh.Connect();
ssh.RunCommand("echo 1 > C:\test.csv"); //Doesn't create a file
ssh.Disconnect();
Почему это не работает с SSH.NET? Если я запустил это через замазку, используя те же учетные данные, он будет работать отлично.
РЕДАКТИРОВАТЬ (рабочий код):
Я немного поигрался и обнаружил, что работает следующее:
// ssh is the SshClient which is already set up
ssh.Connect();
var shell = ssh.CreateShellStream("cmd.exe", 80, 24, 800, 600, 1024);
var reader = new StreamReader(shell);
var writer = new StreamWriter(shell);
writer.AutoFlush = true;
while (!shell.DataAvailable)
System.Threading.Thread.Sleep(1000); //This wait period seems required
writer.WriteLine("echo 1 > C:\test.csv");
while (!shell.DataAvailable)
System.Threading.Thread.Sleep(1000); //This wait period seems required
ssh.Disconnect();
Хотя это работает, я все еще не понимаю, что здесь происходит на самом деле. Может кто-нибудь объяснить?