2016-08-08 99 views
0

Nach einigem google habe ich keine Antwort gefunden, die meiner genauen Situation entspricht. Das ist vielleicht mehr Info als Sie interessieren, aber ich denke, ich muss die Bühne für meine Frage aufstellen. Mein einfaches Ziel ist es, ein Cisco IOS-Gerät entweder mit serieller Konsole oder ssh zu lesen und zu steuern. Um die "Geschäftslogik" aus dem Transport zu abstrahieren, habe ich versucht, einen Stream zu erstellen. Für die serielle Konsole, nachdem ich eine serielle Schnittstelle erstellt habe, benutze ich den Basestream und alles funktioniert gut. FYI das war mein Rosetta-ähnlicher Moment, um den seriellen Port zum Laufen zu bringen. If you must use .NET System.IO.Ports.SerialPort Das Hinzufügen des ssh-Streams (für mich) führte mich zu Sharps und Renci für meine ssh-Verbindung. Ich entschied mich, zuerst Renci zu testen. Heruntergeladen und kompiliert, um meine DLL zu bekommen (mein Projekt ist in VB.NET). Verbunden, erstellt einen Shell-Stream und übergab diesen Stream dann an die gleichen Funktionen, die der serielle Stream verwendet hat. Alles funktioniert, außer wenn ich einen "Show Run" mache. Ich habe meine Terminal-Länge auf 0 gesetzt, so dass es keine Seitenumbrüche gibt. Ich bekomme Ausgabe, aber wenn ich die SSH verwende, fehlen Teile im Capture. Meine Theorie ist bei der seriellen Geschwindigkeit (9600 Baud) der Strom ist in der Lage, mitzuhalten, aber bei LAN-Geschwindigkeit (1 Gigbit) überwinde ich den Puffer. Was tatsächlich erfasst wird, ist ein wenig anders, aber meistens fehlt im selben Bereich Text. Kleine Screenshots wie "show ip int br" funktionieren super. Ich habe die Puffergröße "CreateShellStream" ohne Änderung erhöht. Ich habe mir den Renci-Code angeschaut, wenn ich ihn richtig verstehe, scheint er die Puffergröße nicht zu überschreiten. Gedanken?Renci.SshNet ShellStream scheint Zeichen fallen zu lassen

Antwort

0

Ich hatte einen Freund, der sagt, wir alle Server als ein Beispiel, einige von uns gut, einige schlecht. Ich muss auf das Schwert fallen und ein schlechtes Beispiel sein. Zuerst ist die untere Zeile mein Puffer, dem der Streaming-Callback hinzugefügt wurde, und meine höheren Lesefunktionen, die diesen Puffer analysierten. Ich habe es nicht mit einer synclock geschützt.