2011-01-03 5 views
12

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

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

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

ответ

15

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

Edit: Вы можете запустить любую команду над 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(); 
} 
+0

хорошо, но это только замена "LS" , Я понимаю, что это был простой пример для команды _any_. –

+1

@ Hangy: Спасибо, что ответили. Я не смог запустить ваш предложенный код, поскольку мне нужно получить систему со всей установкой .Net. ..... Я ищу решение, которое будет полезно для запуска любой команды или скрипта, который находится в удаленной системе. (Спасибо Хенк Холтерман). – vrbilgi

+0

Извините, я не использовал это сам, но я надеюсь, что пример в моем редактировании и добавленные ссылки помогут вам достичь этого! – hangy