【问题标题】:Execute SSH commands on Cisco router. Codeigniter SSH library在 Cisco 路由器上执行 SSH 命令。 Codeigniter SSH 库
【发布时间】:2012-06-03 08:36:40
【问题描述】:

我有一个小问题。我正在将 Codeigniter 与 Shuky 编写的 SSH 库一起使用(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) ) {

也许你们知道问题出在哪里?

感谢您的宝贵时间和您的回答!

【问题讨论】:

  • 如何使用 SSH 类。你能展示一些你的代码吗?您尝试executecommand 是什么?

标签: codeigniter ssh cisco


【解决方案1】:

尝试使用phpseclib, a pure PHP SSH implementation。尽管它目前受到支持,但它还支持日志记录,这可能会帮助您 - 或作者 - 弄清楚发生了什么(假设 phpseclib 有同样的问题,但它可能不会!)

【讨论】:

    【解决方案2】:

    函数 _get_stream_data 在库中用于以下上下文:

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

    ssh2_exec 返回的$stream 值在 ssh 连接成功建立时是资源,在错误情况下是布尔值 FALSE

    不幸的是,ssh2 PECL 库无法处理太多错误。最简单的方法是输出$command 的值。并从命令行执行相同的命令。

    【讨论】:

    • 感谢 Dmitri 的回答,但能否提供更多详细信息?
    • 恐怕我可以补充的不多,因为我没有办法重现这个问题。我要说的是,问题不在stream_set_blocking,而在ssh2_exec
    • 但是是否可以向库中添加一些内容并使其也适用于 cisco 设备?
    【解决方案3】:

    你必须先运行命令

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

    然后您可以像这样查看流:

    echo $this->ssh->data;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多