2011-01-03 11 views
12

Devo eseguire un comando nel sistema Unix dalla mia applicazione C# in esecuzione su Windows. I due sistemi sono nella stessa rete e ho tutte le credenziali richieste.Comando C# Esegui sistema remoto

C'è qualche API da cui posso eseguire il comando "ls" di UNIX dal codice C# da che stabilisce una connessione SSH.

EDIT: Sto cercando una soluzione che aiuterà nella gestione di qualsiasi comando o uno script presente nel sistema remoto.

risposta

15

sistemi che eseguono SSH solito supportano un qualche tipo di SFTP, quindi si potrebbe utilizzare qualcosa come 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(); 
} 

Modifica: È possibile eseguire qualsiasi comando su SSH con entrambe le librerie. Certo, non ho fatto che, ancora, ma dovrebbe funzionare in questo modo:

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

OK, ma che è solo un sostituto per "ls" . Capisco che potrebbe essere stato un semplice esempio per _any_ comando. –

+1

@Hangy: Grazie per la risposta. Non ho potuto eseguire il tuo codice suggerito in quanto devo avere il sistema con tutte le configurazioni .Net. ..... Sto cercando una soluzione che possa essere utile per eseguire qualsiasi comando o script in Remote System. (Grazie a Henk Holterman). – vrbilgi

+0

Scusa, non l'ho usato da solo, ma spero che l'esempio nella mia modifica e i collegamenti aggiunti ti aiutino a farlo! – hangy