2012-03-25 5 views
2

私は何をしようとしているのですか?SharpSSHを使用してadditonal入力を促すlinuxコマンドを実行するには?

LinuxマシンにSSHセッションをセットアップし、 "ls"やcpのようなコマンドを発行する必要があります。

HERESにスニペット

  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" のようなコマンドは、あなたがそれをタイプシンプルであり、それは出力が得られますが、

のようなaddtionalのacknowledementを必要とRMなどのコマンド"y"

上記のコードからわかるように、コードは基本的に

のようなバイトシーケンスを生成します

のrmのVivek [ENTER] Y [ENTER]

しかし、それは仕事をdoesntの、それはまだ

[[email protected] ~]# rm vivek 
rm: remove regular file `vivek'? 

で入力するためにwatingているかのようにそれが私がここに間違って何をしているのですか?

質問は明らかです。

P.S私は同じ結果をSSHExecサンプルでもう一度試しました。

答えて

1

なぜ、確認を避けるためrm vivek -fをしないのですか?

そうでない場合は、単に質問を期待し、応答を読む前にそれに答える:

ssh.Write(byt); 
ssh.Expect("rm: remove .*"); 
ssh.WriteLine("y"); 
Console.WriteLine(ssh.ReadResponse()); 
+0

素晴らしいアイデアを! +1しかし、それは "rm"の問題を解決するだけです。私はルータを設定していて、どこにコマンドにはこれらのオプションがないのでしょうか...私の根本的な問題です。私はちょうど私の問題を説明している –

+0

あなたはダイアログとしてそれを考える必要があります。あなたは何かを送ったり、何かを期待したり、何か他のものを送ったりします。 – Diego

+0

試してみましょう! –

関連する問題