我想用php执行gotty top -c命令。在shell上Gotty给出了下面的命令
2017/12/12 17:09:45 GoTTY is starting with command: top -c
2017/12/12 17:09:45 HTTP server is listening at: http://:::8080/
2017/12/12 17:09:45 Alternative URL: http://127.0.0.1:8080/
2017/12/12 17:09:45 Alternative URL: http://::1:8080/
2017/12/12 17:09:45 Alternative URL: http://88.198.110.71:8080/
在浏览器上,我只想显示http://88.198.110.71:8080/网址。
我尝试使用以下代码获取此功能,但它不适用于我
$output = shell_exec('/bin/gotty top -c');
echo "<pre>$output</pre>";
如何使用php获取此输出?
答案 0 :(得分:0)
您可以尝试使用grep
来获得所需内容。默认情况下,它将返回完整的行,但如果您传递选项-o
,则o
将返回匹配的部分:
/bin/gotty top -c | grep -o 'http://.*'
这将打印
http://:::8080/
http://127.0.0.1:8080/
http://::1:8080/
http://88.198.110.71:8080/
要只输出输出中的最后一行,您可以使用tail
:
/bin/gotty top -c | grep -o 'http://.*' | tail -1
输出:
http://88.198.110.71:8080/
答案 1 :(得分:0)
此输出可能仅转到STDERR,因此您需要重定向到STDOUT。此外,如果您只想要输出的最后一行,exec()
命令可以轻松获得。
<?php
$last_line = exec("/bin/gotty top -c 2>&1", $full_output, $exit_status);
echo "<pre>$last_line</pre>";