我必须从在Windows上运行的C#应用程序在Unix系统中运行命令。 这两个系统在同一个网络中,我拥有所有必需的凭据。
是否有任何API可以从C#代码中运行UNIX的“ls”命令 建立SSH连接。
修改 我正在寻找一个有助于运行任何命令或脚本的解决方案 在远程系统中。
答案 0 :(得分:16)
运行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运行任何命令。不可否认,我还没有这样做,但它应该像这样工作:
using (var sshClient = new SshClient("localhost", "root", "bugmenot")
{
sshClient.Connect();
var cmd = sshClient.RunCommand("ls");
var output = cmd.Result;
}
SshStream ssh = new SshStream("localhost", "root", "bugmenot");
try
{
ssh.Write("ls");
var output = ssh.ReadResponse();
}
finally
{
ssh.Close();
}