2016-05-09 3 views
0

Ich habe ein ziemlich seltsames Phänomen angetroffen; Bei Verwendung der client.RunCommand() Funktion, erhalte ich die gesamte Ausgabe vom Schalter, aber wenn meine eigene Implementierung mit:SSH.NET bekommen gesamte Ausgabe von einem Shell-Stream

SshClient cl = new SshClient(ip, username, password); 

cl.Connect(); 

shell = cl.createShellStream("Tail", 80, 24,800, 600, 1024); 

StreamWriter wr = new StreamWriter(shell); 
StreamReader rd = new StreamReader(shell); 

wr.AutoFlush = true; 

wr.WriteLine("show int status"); 

string rep = shell.Expect("Switch_Wan#", new TimeSpan(0,0,3)); 
MessageBox.Show(rep, "Output"); 

I Teil-Ausgabe nur erhalten, und eine Aufforderung zu sagen --More-- Wie kann ich die gesamte Ausgabe von dem bekommen Schalter?

Ein Beispiel für die Teilleistung:

show int status 

Port Name  Status Vlan Duplex Speed Type 
Fa0/1 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/2 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/3 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/4 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/5 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/6 Team7  disabled 97 auto auto 10/100BaseTX 
Fa0/7 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/8 Team7  connected 97 a-full a-100 10/100BaseTX 
Fa0/9 Team11  connected 11 a-full a-100 10/100BaseTX 
Fa0/10 Team11  connected 11 a-full a-100 10/100BaseTX 
Fa0/11 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/12 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/13 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/14 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/15 Team4  disabled 94 auto auto 10/100BaseTX 
Fa0/16 Team11  connected 11 a-full a-100 10/100BaseTX 
Fa0/17 Team11  connected 11 a-full a-100 10/100BaseTX 
Fa0/18 Team11  connected 11 a-full a-100 10/100BaseTX 
Fa0/19 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/20 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/21 Team4  connected 94 a-full a-100 10/100BaseTX 
Fa0/22 Team4  connected 94 a-full a-100 10/100BaseTX 
--More-- 
Switch_Wan# 

Während der Verwendung der client.RunCommand() Funktion ich den gesamten 48-Ports in der Ausgabe erhalten.

Vielen Dank im Voraus, wenn etwas nicht klar ist, bitte sagen Sie es so.

ps. bevor irgendjemand vorschlägt, nein, ich kann client.RunCommand() nicht verwenden, muss ich Streams verwenden.

pps, wenn jemand die Werte erklären könnte, die cl.CreateShellStream("Trail", 80, 24,800, 600, 1024); gehen in ich sehr sehr dankbar sein würde, wie ich verstehe nicht wirklich, was gehen diese Werte in

Antwort

0

Hier ist ein Schuss im Dunkeln ... versuchen Sie dies:

shell = cl.createShellStream("Tail", 0, 0, 0, 0, 1024) 

Ich bin noch neu zu SSH.NET, aber ich denke, das im Wesentlichen setzt Ihre Shell-Fenstergröße auf unendlich und so weniger/mehr kommt nicht ins Spiel.

1

Das sieht ähnlich aus, woran ich gerade gearbeitet habe. Während Simons Antwort Ihnen mehr Daten liefert, hilft es nicht, mehr Daten als die Shell-Größe zurückzugeben (z. B. wenn Sie einen großen Switch mit vielen Ports haben).

Es gibt zwei Möglichkeiten, wie ich versucht, dieses Problem zu lösen:

1) auf das Vorhandensein von der neuesten Linie und prüfen Sie lesen --Mehr--

Problem damit, dass auf der Software-Version des basiert wechseln, dieses Format war anders. Das hat meinen Gebrauch zerstört.

2) Die zweite und bessere Option für mich war SNMP verwenden, um diese Informationen zu erhalten.

Wenn Sie nur Informationen von einem Switch wollen, werde ich definitiv SNMP statt SSH verwenden. All diese Informationen sind sehr einfach zu erhalten, wenn Sie die richtigen OIDs haben. Sie müssen einen SNMP-Pfad ausführen, um diese Informationen zu erhalten. Die Bibliothek, die ich verwendet, ist SNMPSharp.NET (http://www.snmpsharpnet.com/)

Wie für die Werte, die in CreateShellStream Methode gehen, hier ist die Methode Erklärung der docs: öffentlichen ShellStream CreateShellStream (string terminalName, uint Spalten, uint Reihen, uint Breite , uint height, int pufferGröße)

1

Starten Sie einfach "term len 0" zu Beginn Ihrer Sitzung und Sie können die --More-- Prompts ganz vermeiden

Verwandte Themen