我有一个php网站,我想用来从unix服务器收集信息。一个很好的例子是一个ssh到服务器并运行ls命令的脚本。我在格式化输出时遇到问题,因此它是可读的。任何帮助,将不胜感激。代码看起来像这样:
$output = system("ssh user@testServer ls -al");
print ($output);
答案 0 :(得分:6)
您可能想要使用
echo "<pre>";
echo system("ssh user@testServer ls -al");
echo "</pre>";
以$输出显示代码(3个空格显示为3个空格,新行显示为新行)
答案 1 :(得分:1)
问题是这个
system()调用还会尝试自动刷新Web服务器 如果PHP作为服务器运行,则在每行输出后输出缓冲区 模块。
所以你需要这样做:
echo '<pre>';
$output = system("ssh user@testServer ls -al");
echo '</pre>';
<强>替代强>
正如Deebster建议的那样,如果您在服务器上启用了exec
功能,您也可以这样做
$output = null;
exec("ssh user@testServer ls -al", $output);
echo '<pre>';
foreach($output as $line)
echo $line . "\n";
echo '</pre>';
答案 2 :(得分:0)
尝试使用htmlspecialchars()来转义任何会导致HTML中呈现问题的内容:
print '<pre>' . htmlspecialchars($output) . '</pre>';
pre标签将尊重空格并默认为等宽字体,因此您的线条看起来就像在控制台中一样。
答案 3 :(得分:0)
未经测试但我猜它会起作用 因为php doc说
system()调用还会尝试自动刷新Web服务器 如果PHP作为服务器运行,则在每行输出后输出缓冲区 模块。
ob_start();
system("ssh user@testServer ls -al");
$output = ob_get_clean();
echo '<pre>';
echo $output;
echo '</pre>';