14

Windows で実行されている C# アプリケーションから Unix システムでコマンドを実行する必要があります。2 つのシステムは同じネットワークにあり、必要なすべての資格情報を持っています。

SSH接続を確立することにより、C#コードからUNIXの「ls」コマンドを実行できるAPIはありますか?

編集: リモート システムに存在するコマンドまたはスクリプトの実行に役立つソリューションを探しています。

4

1 に答える 1

18

SSH を実行するシステムは通常、ある種の SFTP をサポートするため、SSH.NETのようなものを使用できます。

using (var sftpClient = new SftpClient("localhost", "root", "bugmenot")
{
    sftpClient.Connect();
    var files = sftpClient.ListDirectory("/tmp");
}

またはSharpSSH :

Sftp sftp = new Sftp("localhost", "root", "bugmenot");
try
{
    sftp.Connect();
    ArrayList files = sftp.GetFileList("/tmp");
}
finally
{
    sftp.Close();
}

編集:両方のライブラリを使用して、SSH経由で任意のコマンドを実行できます。確かに、私はまだそれを行っていませんが、次のように動作するはずです:

SSH.NET

using (var sshClient = new SshClient("localhost", "root", "bugmenot")
{
    sshClient.Connect();
    var cmd = sshClient.RunCommand("ls");
    var output = cmd.Result;
}

SharpSSH

SshStream ssh = new SshStream("localhost", "root", "bugmenot");
try
{
    ssh.Write("ls");
    var output = ssh.ReadResponse();
}
finally
{
    ssh.Close();
}
于 2011-01-03T09:35:08.693 に答える