【问题标题】:get result from ssh2_exec从 ssh2_exec 获取结果
【发布时间】:2016-01-23 03:13:11
【问题描述】:

我有一个与服务器建立 SSH 连接的脚本(这工作正常)。现在我想执行一个命令并回显我从这个命令得到的结果。

所以我这样做:

$stream = ssh2_exec($conn, 'php -v');

但我无法让它显示响应,var_dump 返回resource(3) of type (stream)

我试过用:

$stream = ssh2_exec($conn, 'php -v');
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

$stream_out 返回一个空字符串。

那么是否可以将响应打印为脚本的结果?

【问题讨论】:

    标签: php


    【解决方案1】:

    好的,我找到了解决方案,所以我将其发布以供将来参考

    所以要输出 ssh2_exec 执行的命令的结果,你应该使用以下代码设置

    $stream = ssh2_exec($conn, 'php -v');
    stream_set_blocking($stream, true);
    $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
    echo stream_get_contents($stream_out);
    

    【讨论】:

    • 我相信对 ssh2_fetch_stream 的调用是不必要的——你可以使用 $stream。
    • 不调用“ssh2_fetch_stream”就可以得到流的IO输出,但是不能得到STDERR输出。
    【解决方案2】:

    添加:

    echo stream_get_contents($stream);
    

    结果是 STREAM,您必须先获取它的内容...

    stream-fetch 仅用于获取备用子流...(afaik)

    【讨论】:

    • 当我使用 stream_get_contents 时,var_dump 返回 string(0) "",这是否意味着 exec 命令没有执行或者我返回了错误的流
    • 我找到了解决方案,我会在 stackoverflow 让我发布它时将其添加为答案!
    • 你能发布解决方案吗
    猜你喜欢
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多