2011-01-03 27 views
12

Tengo que ejecutar un comando en el sistema Unix desde mi aplicación C# ejecutándose en Windows. Los dos sistemas están en la misma red y tengo todas las credenciales requeridas.C# Command Run remote System

¿Hay alguna API desde la que pueda ejecutar el comando "ls" de UNIX desde el código C# por estableciendo una conexión SSH.

EDIT: Busco a una solución que ayudará a ejecutar cualquier comando o script presente en el sistema remoto.

Respuesta

15

Los sistemas que ejecutan SSH generalmente soportan algún tipo de SFTP, por lo que sólo podían usar algo como SSH.NET:

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

o SharpSSH:

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

Edición: Se puede ejecutar cualquier comando sobre SSH con ambas bibliotecas. Es cierto, yo no lo he hecho, sin embargo, pero se supone que funciona de esta manera:

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

bien, pero eso es sólo un sustituto de "ls" . Entiendo que podría haber sido un simple ejemplo para _any_ comando. –

+1

@Hangy: Gracias por responder. No pude ejecutar su código sugerido ya que tengo que obtener el sistema con toda la configuración .Net. ..... Estoy buscando una solución que sea útil para ejecutar cualquier comando o script que esté en el Sistema Remoto. (Gracias Henk Holterman). – vrbilgi

+0

Disculpe, no lo he usado, pero espero que el ejemplo en mi edición y los enlaces agregados lo ayuden a lograrlo. – hangy