我正在尝试通过 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?如果我使用相同的凭据通过 putty 运行它,它工作得非常好。
编辑(工作代码):
我做了更多的游戏,发现以下工作:
// 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();
虽然这有效,但我仍然不明白这里到底发生了什么。有人可以解释一下吗?