わかりました、私がやろうとしていることはここにあります
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 サンプルをもう一度試してみましたが、同じ結果が得られました。