Pytanie C # Command Uruchom zdalny system


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

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

EDYTOWAĆ: Szukam rozwiązania, które pomoże w uruchomieniu dowolnego polecenia lub skryptu w systemie zdalnym.


12
2018-01-03 09:28


pochodzenie




Odpowiedzi:


Systemy obsługujące SSH zwykle obsługują pewien rodzaj SFTP, więc możesz po prostu użyć czegoś takiego 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();
}

Edytować: Możesz uruchomić dowolne polecenie przez SSH w obu bibliotekach. Trzeba przyznać, że jeszcze tego nie zrobiłem, ale powinno 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();
}

15
2018-01-03 09:35



OK, ale to tylko substytut "ls". Rozumiem, że mógł to być prosty przykład każdy dowództwo. - Henk Holterman
@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
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
@ user430294 masz na myśli, że nie możesz używać komponentów innych firm? Wtedy masz pecha. NET nie ma wbudowanej obsługi SSH. Będziesz musiał napisać klienta SSH od podstaw lub skorzystać z biblioteki innej firmy. Te wymienione powyżej przez hangy są bezpłatne i nieobsługiwane. Oferujemy nasze obsługiwane komponenty: eldos.com/sbb/net-ssh.php . - Eugene Mayevski 'Allied Bits
zapomniałeś linii w drugim przykładzie ssh.net. Musisz zrobić sshclient.Connect () po użyciu :) - Joshua