2011-01-03 17 views
12

Muszę uruchomić polecenie w systemie Unix z mojej aplikacji C# działającej w systemie Windows. Dwa systemy są w tej samej sieci i mam wszystkie wymagane poświadczenia.C# Command Run remote System

Czy istnieje jakieś API, z którego można uruchomić polecenie "ls" UNIX z kodu C# przez ustanawiające połączenie SSH.

EDIT: szukam rozwiązania, które pomogą w prowadzeniu jakiegokolwiek polecenia lub skryptu obecny w zdalnym systemie.

Odpowiedz

15

systemy, które działają SSH zwykle obsługują jakąś SFTP, więc można po prostu użyć coś SSH.NET:

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

lub SharpSSH:

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

Edit: Można uruchomić dowolną komendę przez SSH z obiema bibliotekami. Trzeba przyznać, że nie zrobili, że jeszcze, ale to ma działać tak:

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, ale to jest tylko substytutem "LS" . Rozumiem, że mógł to być prosty przykład polecenia _any_. –

+1

@Hangy: Dzięki za odpowiedź. Nie mogłem uruchomić sugerowanego kodu, ponieważ muszę pobrać system z całą konfiguracją .Net. ..... Szukam rozwiązania, które przyda się do uruchomienia dowolnego polecenia lub skryptu, który jest w systemie zdalnym (dzięki Henk Holterman). – vrbilgi

+0

Niestety, sam tego nie użyłem, ale mam nadzieję, że przykład w mojej edycji i dodane linki pomogą ci to osiągnąć! – hangy