0

少し問題があります。Shuky によって作成された SSH ライブラリで Codeigniter を使用しています (https://bitbucket.org/quicktips/codeigniter-ssh2-library/src/a444968345ba/SSH.php -- このリンクをたどるとコードが表示されます)。

SSH に関連するものはすべて他のデバイスでは問題なく動作しますが、このライブラリを使用して Cisco デバイスでコマンドを実行しようとしても、何も起こりません (コマンドは実行されません)。接続が成功していることはわかっていますが、コマンドを実行できません。

Cisco デバイスで SSH を介してコマンドを実行しようとすると、次のエラーが発生します。

A PHP Error was encountered

Severity: Warning

Message: stream_set_blocking() expects parameter 1 to be resource, boolean given

Filename: libraries/SSH.php

Line Number: 128

A PHP Error was encountered

Severity: Warning

Message: fread() expects parameter 1 to be resource, boolean given

Filename: libraries/SSH.php

Line Number: 129

ライブラリでは、これらの行は次のようになります。

       /**
 * Get stream data
 *
 * @access privte
 * @return bool
 */
function _get_stream_data($stream) {
    stream_set_blocking( $stream, true );
    while( $buf = fread($stream,4096) ) {
        $this->data .= $buf.'~';
    }
    return TRUE;
}    



line 128 - stream_set_blocking( $stream, true );
line 129 - while( $buf = fread($stream,4096) ) {

たぶん、どこに問題があるか知っていますか?

お時間をいただき、ご回答いただきありがとうございます。

4

3 に答える 3

1

関数 _get_stream_data は、ライブラリで次のコンテキストで使用されます。

  if($this->_is_conn()) {
        $stream = @ssh2_exec($this->conn_id, $command);
        return $this->_get_stream_data($stream);
  }

$streamによって返される値は、ssh2_execssh 接続が正常に確立された場合はリソースであり、エラーの場合はブール値のFALSEです。

ssh2残念ながら、 PECL ライブラリで実行できるエラー処理はあまりありません。最も簡単なのは の値を出力することです$command。コマンドラインから同じコマンドを実行します。

于 2012-06-03T16:49:06.313 に答える
1

純粋な PHP SSH 実装である phpseclibを使用してみてください。現在サポートされているにもかかわらず、ロギングもサポートされているため、何が起こっているのかを理解するのに役立ちます (phpseclib に同じ問題があると仮定すると、そうではないかもしれません!)

于 2012-06-06T13:15:22.357 に答える
0

最初にコマンドを実行する必要があります

$this->ssh->execute($cmd);

その後、次のようにストリームを表示できます。

echo $this->ssh->data;
于 2013-02-17T00:43:39.013 に答える