2011-01-03 8 views
12

Je dois exécuter une commande dans le système Unix à partir de mon application C# fonctionnant sous Windows. Les deux systèmes sont dans le même réseau et j'ai toutes les informations d'identification requises.C# Commande Exécuter le système distant

Y at-il une API à partir de laquelle je peux exécuter la commande "ls" d'UNIX à partir du code C# par en établissant une connexion SSH.

EDIT: Je cherche une solution qui contribuera à exécuter une commande ou d'un script présent dans le système à distance.

Répondre

15

Les systèmes qui exécutent SSH prennent en charge généralement une sorte de SFTP, vous pouvez donc utiliser quelque chose comme SSH.NET:

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

ou SharpSSH:

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

Modifier: Vous pouvez exécuter une commande sur SSH avec les deux bibliothèques. Certes, je ne l'ai pas fait, encore, mais il est censé fonctionner comme ceci:

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, mais qui est seulement un substitut pour "ls" . Je suppose que cela pourrait avoir été un exemple simple pour _any_ commande. –

+1

@Hangy: Merci d'avoir répondu. Je ne pouvais pas exécuter votre code suggéré car je dois obtenir le système avec toutes les configurations .Net. ..... Je cherche une solution qui sera utile pour exécuter n'importe quelle commande ou script qui est dans le système à distance (merci Henk Holterman). – vrbilgi

+0

Désolé, je ne l'ai pas utilisé moi-même, mais j'espère que l'exemple dans mon édition et les liens ajoutés vous aider à y parvenir! – hangy

Questions connexes