2016-05-09 19 views
0

Iveは非常に奇妙な現象に遭遇しました。 client.RunCommand()機能を使用する場合、私はスイッチからの出力全体を得るが、私自身の実装使用している場合:SSH.NETがシェルストリームからの出力全体を取得する

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から全体の出力を取得できますか--More-- を言ってプロンプトを取得しますスイッチ?部分出力用

例:

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# 

iが出力全体48個のポートを取得client.RunCommand()関数を使用している間。

先進的なことがありますが、何かが明確でない場合は、そう言いましょう。

ps。誰もが示唆する前に、私はclient.RunCommand()を使用することができません、私はストリームを使用する必要があります。誰もがcl.CreateShellStream("Trail", 80, 24,800, 600, 1024);に入る値を説明できる

PPS場合、私は本当に、これらの値は、ここでは暗闇の中でショットだ

答えて

0

に入るものを理解しないように非常に非常に感謝するでしょう...これを試してみてください。

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

私はまだSSH.NETの新機能ですが、これは本質的にシェルウィンドウのサイズを無限に設定し、それほど多くない/より多くの機能が動作しないと思います。

1

これは私が最近取り組んでいたものと似ています。 Simonの答えはより多くのデータを提供しますが、シェルサイズよりも多くのデータを返すと役立ちません(たとえば、ポートが多い大きなスイッチがある場合)。

私はこの問題を解決しようとした2つの方法があります。そのソフトウェアのバージョンに基づいています

1)最新のラインを読み、これとの--More--

問題の存在を確認するにはスイッチは、この形式が異なっていました。だから、これは私の使い方を壊した。

2)2番目の選択肢は、SNMPを使用してこの情報を取得することでした。

スイッチからの情報だけが必要な場合は、間違いなくSSHではなくSNMPを使用します。あなたが正しいOIDを持っていれば、この情報はすべて簡単に入手できます。 この情報を得るには、SNMPウォークを行う必要があります。 公共ShellStream CreateShellStream(文字列terminalName、UINT列、UINT行、UINT幅:CreateShellStream方法に入る値のため、ここではドキュメントからのメソッド宣言があるので、私が使用するライブラリはSNMPSharp.NET(http://www.snmpsharpnet.com/

です、uint height、int bufferSize)

1

セッションの開始時に「term len 0」を実行するだけで、より多くのプロンプトが表示されなくなります。

関連する問題