shell输出到web

Lop*_*poc 2 php linux bash shell

我需要一种在网页上显示linux shell输出的方法.我知道有很多网壳,但没有一个让我显示时间变化输出(使用如下命令:top,watch ...),我需要一个基于shell的网络分析仪,所以我不能每次都启动和停止它,因为它需要连续运行.有没有简单的方法来做到这一点?我不需要与shell进行任何交互,只需要给定命令的输出.

在此先感谢Lopoc

Mar*_*oij 6

在PHP中,您可以使用exec():http://www.php.net/manual/en/function.exec.php

$last = exec('ls', $o, $r);
Run Code Online (Sandbox Code Playgroud)

$o将保持输出并$r保持返回码并$last保持最后一行输出.一般来说,您通常会使用它:

$last = exec('ls', $o, $r);
if ($r != 0)
{
  print 'Error running command';
  exit($r);
}
else
  print implode("\n", $o);
Run Code Online (Sandbox Code Playgroud)

top是一个交互式程序,命令将永远继续,PHP/exec()将继续等待它完成.您可以使用top -b -n1"批处理模式".top(1)有关top参数的更多信息,请参阅参考资料.

如果您想要一个适用于任何命令的更通用的解决方案,您可以使用popen()(或proc_open())从xmlrpc脚本运行.这是一个更复杂的设置,并且需要一些有关UNIX进程控制的知识.正确地做这件事远非微不足道......

PS:top的​​参数因操作系统而异.在Linux上,你top -b -n 1在FreeBSD上使用它top -b 999(其中999是要显示的行数).不确定这对你是否重要,但保持在你的脑后是件好事.