2016-04-13 18 views
0

SSH.NETライブラリを使用してサーバーに接続すると、デフォルトのフォルダは/mif/stud3/2014/rira1874になります。実行時C#SSH.NETでディレクトリを変更できません

res = ssh.CreateCommand("cd existingFolder").Execute(); 
Console.WriteLine(res); 

デフォルト接続フォルダに残ります。ここで何が間違っていますか?

フルコード:

public void ConnectWithPassword(string username, string password, string domain, int port) 
     { 
      bool i = true; 
      using (var ssh = new SshClient(CreatePasswordConnectionInfo(username, password, domain))) 
      { 
       try 
       { 
        ssh.Connect(); 
        if (ssh.IsConnected) 
        { 
         while(i == true) 
         { 
          string res = Regex.Replace(ssh.CreateCommand("pwd").Execute(), @"\r\n?|\n", ""); 
          Console.Write(res + ": "); 
          res = ssh.CreateCommand(Console.ReadLine()).Execute(); 
          Console.WriteLine(res); 
         } 
        } 
        else { 
         Console.WriteLine("Not connected"); 
        } 
        ssh.Disconnect(); 
       } 
       catch (Exception e) 
       { 
        Console.WriteLine("Exception caught: {0}", e); 
       } 
      } 
     } 
+0

あなたのコードと同じ質問が表示されない--->あなたのコードには 'res = ssh.CreateCommand(Console.ReadLine())。Execute();'があります。 'res = ssh.CreateCommand(" cd existingFolder ")についてです。Execute();'! –

+0

私が意味するのは、コンソールに「cd existingFolder」と書かれたときでも、それでもディレクトリは変更されません。 –

答えて

1

はあなたが "/ MIF/stud3/2014/rira1874" で、まだ実際にしていることを確認するディレクトリの一覧を確認しましたか?あなたがSSHingしている場所は、* nixボックスのように見えます。この仮定は線ssh.CreateCommand("pwd").Execute()に基づいています。この場合、コンソールに返される/表示されるディレクトリリストは変更されないことがあります。たとえば、次のPWD /user/me/home: $を持つコンソールがあり、ディレクトリを/developer/に変更しようとすると、実際に私が/user/me/home/developerにいるときに私のコンソールにまだ私が/user/me/homeであると表示されることがありますが、lsには表示されます。

基本的には、ディレクトリを実際に変更していないことを確認し、コマンドから返された値があなたを捨てるだけではないことを確認します。

+0

「Documents」という既存のフォルダを入力して、 'ls'では'/mif/stud3/2014/rira1874/Documents'の内容ではなく、接続先のフォルダと同じフォルダを表示します。私が 'cd Documents && ls'をしない限り。しかし、依然としてクライアントはデフォルトフォルダに戻ります。 ここに画像があります:http://i.imgur.com/a7CBfPC.png –

1

string cmdstr = "cd /etc; ls -la"; ssh.Connect(); var cmd = ssh.RunCommand(cmdstr); var result = cmd.Result;

は基本的にssh.netが許可されていません以下/サポート(私は推測する)を行うようにしてください。別の方法は、ディレクトリに変更して、必要なコマンドを実行することです。 いくつかのファイルを実行する必要がある場合は、上記の例 "cd/etc; ./yourFile"を使用してください。セミコロン ";"実行を続けることができます。

関連する問題