Команда C # Запустить удаленную систему - PullRequest
13 голосов
/ 03 января 2011

Мне нужно запустить команду в Unix System из моего приложения C #, работающего в Windows. Две системы находятся в одной сети, и у меня есть все необходимые учетные данные.

Есть ли какой-либо API, из которого я могу запустить команду "ls" UNIX из C # кода установление соединения SSH.

EDIT: Я ищу решение, которое поможет в запуске любой команды или скрипта в удаленной системе.

1 Ответ

16 голосов
/ 03 января 2011

Системы, в которых работает 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();
}
...