好的,这就是我想要做的
我必须设置一个到 linux 机器的 SSH 会话并发出类似“ls”或 cp 的命令。
这是片段
SshStream ssh = new SshStream ("myhost","root","pass");
ssh.Prompt ="#";
ssh.RemoveTerminalEmulationCharacters = true;
byte[] byt = System.Text.Encoding.ASCII.GetBytes("rm vivek");
Array.Resize (ref byt,byt.Length +3 );
byt[byt.Length-1]=(byte)'\r';
byt[byt.Length - 2] = (byte)'y';
byt[byt.Length - 3] = (byte)'\r';
ssh.Write(byt);
Console.WriteLine(ssh.ReadResponse());
问题是像“ls”这样的命令很简单,你输入它并给出输出,但是像rm这样的命令
需要额外的确认,如“y”
正如您从上面的代码片段中看到的那样,代码本质上会生成一个字节序列,例如
rm vivek [输入] y [输入]
但它不起作用,就好像它仍在等待输入
[root@host ~]# rm vivek
rm: remove regular file `vivek'?
我在这里做错了什么?
希望问题很清楚。
PS 我再次尝试了 SSHExec 示例,结果相同。