Frage zu SharpSSH (tail -f output in RichTextBox)

  • WPF

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von TomTheOne.

    Frage zu SharpSSH (tail -f output in RichTextBox)

    Hallo Zusammen,

    Schön gibt es dieses Forum!

    Ich habe eine Frage zur Verwendung von SharpSS von Tamir Gal: tamirgal.com/blog/page/sharpssh.aspx

    Vermutlich oute ich mich voll als Newbie hier mit meiner Frage, ich bitte um Nachsicht. Ich bin noch in der Lernphase.

    Was ich erreichen möchte:
    Ich habe ein Form mit drei Elementen: Eine RichTextBox, eine TextBox und ein Button.
    Es soll eine SSH Verbindung zu einem Server aufgebaut werden und dann möchte ich gerne in die TextBox Befehle eingeben und mit dem Button 'abschiessen', im Anschluss soll der Output vom SSH Server in die RichTextBox eingefügt werden.
    Soweit kriege ich das hin. Mein ganz simples Beispiel ohne BackgroundWorker:

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim SshExec = New SshExec("10.0.1.32", "root", "123456")
    SshExec.Connect()
    Dim stdOut As String = Nothing
    Dim stdError As String = Nothing
    SshExec.RunCommand(Me.TextBox1.Text, stdOut, stdError)
    Me.RichTextBox1.Text = stdOut
    SshExec.Close()
    End Sub


    Das Problem beginnt erst dann, wenn ich einen Befehl abfeure welcher nie endet: Zb. ein tail -f /your/file. Scheint mir soweit logisch.

    Nun gibt es neben der SshExec Funktion auch SshStream.

    Dim ssh As New SshStream("10.0.1.32", "root", "123456")
    ssh.Prompt = "#"
    ssh.RemoveTerminalEmulationCharacters = True
    While ssh.CanRead
    Me.RichTextBox1.Text = ssh.ReadResponse()
    End While
    ssh.Close()


    Auch hier das selbe Problem: Der ist ständig die Response am lesen weil ein tail -f ja nie aufhört.
    Ich komme hier nicht weiter und möchte eben Fragen ob jemand hier eine Lösung wüsste oder einen Hinweis hat, damit ich den richtigen Pfad finden kann.

    Allen eine gute Woche und beste Grüsse
    Tom

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TomTheOne“ ()

    Erstens musst du das Ganze asynchron ausführen. Ich kenn die LIB nicht, wenn diese keine asynchronen Methoden bietet um Commands zu senden bzw Responses zu empfangen dann musst du es in deiner Anwendung tun.

    Das zweite ist, das solche infinite Commands wie tail -f ja vermutlich immer CanRead = True haben. Ich weiß nicht ob der SSHStream eine Abort Methode hat für solche Fälle. Ansonsten kannst du wohl nur den Code nehmen und eine neue Methode selber draus schreiben, bei der du auch noch ein Abort senden kannst (weiss grad gar nicht was das ist. Bei Putty mach ich dann einfach Strg+C).

    Hoffe das hilft dir etwas weiter.
    LG
    Das ist meine Signatur und sie wird wunderbar sein!
    Danke für deine Antwort. Das Problem ist, dass bei beiden Varianten in der RichtTextBox nie etwas ankommt.
    Ich wäre schon einen Schritt weiter, wenn mal was ankommen würde. Komischerweise gibt es ein Console Sample bei welchem dies funktioniert.
    Ich muss mich noch tiefer damit auseinandersetzen - Inputs welcome!

    Viele Grüsse
    Tom