我有一个脚本,可以通过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);
但是CCD_ 3返回空字符串。
那么,是否可以将响应打印为脚本的结果呢?
好的,我找到了解决方案,所以我发布它以供将来参考
因此,要输出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);
添加:
echo stream_get_contents($stream);
结果是STREAM,您必须首先获取它的内容。。。
流提取仅用于提取备用子流。。。(afaik)
下面的代码应该将错误消息写入stderr,但如果首先运行对stdout的stream_get_contents()的调用,则对stderr的后续调用将不会返回任何内容。
如果语句的顺序颠倒,则对stderr的调用将返回任何错误,对stdout的调用将不返回任何
https://www.php.net/manual/en/function.ssh2-exec.php#99089