C#命令运行远程系统

vrb*_*lgi 13 c# ssh remote-access

我必须从在Windows上运行的C#应用​​程序在Unix系统中运行命令.这两个系统在同一个网络中,我拥有所有必需的凭据.

是否有任何API可以通过建立SSH连接从C#代码运行UNIX的"ls"命令.

编辑: 我正在寻找一个有助于运行远程系统中的任何命令或脚本的解决方案.

han*_*ngy 16

运行SSH的系统通常支持某种SFTP,所以你可以使用像SSH.NET这样的东西:

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

SharpSSH:

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

编辑:您可以使用两个库通过SSH运行任何命令.不可否认,我还没有这样做,但它应该像这样工作:

SSH.NET

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

SharpSSH

SshStream ssh = new SshStream("localhost", "root", "bugmenot");
try
{
    ssh.Write("ls");
    var output = ssh.ReadResponse();
}
finally
{
    ssh.Close();
}
Run Code Online (Sandbox Code Playgroud)

  • 你忘记了ssh.net第二个例子中的一行.你必须在使用后做一个sshclient.Connect():) (2认同)