2017-10-05 5 views
0

シスコルータでこの「show version」コマンドに問題があります。次の画面に進むには、 " - もっと見る - "と表示されたらキーを押します。phpseclib ssh2 pty telnet cisco - 「show version」で進める方法

function showVersion($ssh, $ansi){ 
    $ssh->enablePTY(); 
    $ssh->write("show version\n"); 
    //$ssh->exec("show version"); 

    $prompt_saida = ""; 

    $ssh->setTimeout(3); 
    $prompt_temp = $ssh->read('#--More--|\[>\]#', NET_SSH2_READ_REGEX); 
    $prompt_saida = $prompt_temp; 

    $ssh->setTimeout(3); 
    while($prompt_temp = $ssh->read('#--More--|\[>\]#', NET_SSH2_READ_REGEX)){ 
     $ssh->setTimeout(3); 
     $prompt_saida.= $ssh->read(NET_SSH2_READ_REGEX); 
       if (!preg_match('#--More--$#', $prompt)) {    break;   } 
     $ssh->write(' '); 
     $ssh->setTimeout(3); 
    } 
    return $prompt_saida; 
    //$ssh->write("terminal length 0\n"); 
    //$ssh->write("\n"); 

    $ssh->setTimeout(3); 
    //$ssh->read(); 
    //$ssh->getLog(); 
    $ansi->appendString($ssh->read()); 

} 

最終ログイン:水曜日10月4日午前15時41分46秒2017許可されたユーザへのアクセスを制限xx.xx.xxx.xxx

からコードを実行します。 [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx] [xxx

認証が成功しました!

"ルータの設定をNVRAMに保存しないでください。変更をまとめた後に!"

xxxxx_xxxx_xx>のshow version のbash:ショー:コマンドが見つかりません [XXXXXXXXXX [XXXの@ [34; 1mPRA-XXXXXXXX [XXXX> [XXX $ssh->exec("show version");

最終ログインで

:水曜日10月4日15 :41:46 2017 from xx.xx.xxx.xxx

許可されたユーザーへのアクセスが制限されています。 [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx] [xxx

認証が成功しました!

"ルータの設定をNVRAMに保存しないでください。変更をまとめた後に!"

xxxxx_xxxx_xx>/binに/ bashの:ショー:コマンドが

を見つけていないあなたは私を助けるだろうか?私は非常に感謝します!

私はまた、画面上のルータのログを表示するための最良の方法を知りたいのですが:

$ssh->read(); 
$ssh->read(NET_SSH2_READ_REGEX); 
$ssh->getLog(); 
$ansi->getScreen(); 

は、私は、キーとき」を押して次の画面に進むために必要なあなたに

答えて

0

に感謝 - もっと見る - 」と表示されます。

コードでは、 " - 詳細 - "を探していません - "もっと表示する"ではありません。多分それはあなたが意味するものですか?

また、$prompt_saida.= $ssh->read(NET_SSH2_READ_REGEX);を実行しています。代わりに$prompt_saida.= $ssh->read();をやってみてください。あるとしてNET_SSH2_READ_REGEXが表示されるまでdefine('NET_SSH2_READ_REGEX', 2);によって定義され、それがbreakになる可能性がありますので、2が途中で呼び出されていないに等しいの--More--をしているので、あなたは基本的に(数2を待っている。

xxxxx_xxxx_xxを>/bin/bash:show:command not found

PuTTYやOpenSSHのようなSSHクライアントでも実際に "show version"を実行できるかどうかは分かりません。もしそうでなければ、この問題はphpseclibとは無関係であり、それはあなたを助けることができるCisco IOS(?)の専門家からあなたをそらす可能性があると話します。 PHPコード。

私はまた、画面上のルータのログを表示するための最良の方法を知っていただきたいと思います:、私は以前に述べたように、それはあなたが最良の定義方法に依存したいと思いますが

$ssh->read(NET_SSH2_READ_REGEX)はしていませんあなたが思うようなことをしてください。 $ssh->read('#pattern#', NET_SSH2_READ_REGEX)は、$ssh->read(NET_SSH2_READ_REGEX)ではありません。

$ssh->getLog()ログが有効な場合(例:define('NET_SSH2_LOGGING', 2))のみ機能します。鍵交換からチャンネル開設までの暗号化されていないSSHパケットも表示されます。これはおそらくあなたが望むものではありません。

$ansi->getScreen()については、出力でANSIコードが嫌いな場合には動作します。そしてあなたはいくつか持っています。例えば。 [xxxxxxxxxx[[email protected][34;1mPRA-xxxxxxxx[xxxx> - その@[34;1mビットはANSIです。

$ansi->getHistory()で遊ぶ価値があるかもしれません。

関連する問題