我需要一種方法來在網頁上顯示linux shell輸出。我知道有很多webshell,但沒有一個讓我顯示時間變化的輸出(命令如:top,watch ...),我需要一個基於shell的網絡分析器,所以我無法每次都啓動和停止它,因爲它需要連續運行。 有沒有簡單的方法來做到這一點?我不需要與shell的任何交互,只需要給定命令的輸出。shell輸出到web
提前 Lopoc
我需要一種方法來在網頁上顯示linux shell輸出。我知道有很多webshell,但沒有一個讓我顯示時間變化的輸出(命令如:top,watch ...),我需要一個基於shell的網絡分析器,所以我無法每次都啓動和停止它,因爲它需要連續運行。 有沒有簡單的方法來做到這一點?我不需要與shell的任何交互,只需要給定命令的輸出。shell輸出到web
提前 Lopoc
在PHP感謝您可以使用exec()
:http://www.php.net/manual/en/function.exec.php
$last = exec('ls', $o, $r);
$o
將舉行輸出和$r
將持有的返回碼和$last
將保持輸出的最後一行。在一般情況下,你通常會使用像:
$last = exec('ls', $o, $r);
if ($r != 0)
{
print 'Error running command';
exit($r);
}
else
print implode("\n", $o);
top
是一個互動節目,該命令將永遠持續下去,PHP/EXEC()將繼續等待它完成。您可以使用top -b -n1
作爲「批處理模式」。有關top參數的更多信息,請參閱top(1)
。
如果您想要一個適用於任何命令的更通用的解決方案,可以使用從xmlrpc腳本運行的popen()
(或proc_open()
)。這是一個非常複雜的設置,並且需要一些有關UNIX進程控制的知識。正確地做這件事並不是微不足道的...
PS:top的參數因操作系統而異。在Linux上,你使用top -b -n 1
,在FreeBSD上它是top -b 999
(其中999是要顯示的行數)。不知道這對你是否重要,但保持在你的頭腦裏很好。
根據您啓動程序,應該有開關一樣
$ top -n1
這會給你你正在尋找一個快照的形式輸出。
只需使輸出的php腳本在您需要的秒數後刷新自己。
這樣做的一種流行方式,在大多數瀏覽器的工作原理是添加所謂的Meta Refresh:
<meta http-equiv="refresh" content="5">
實例:五秒後刷新頁面實際。
如果你不想學習,你可能想看看到已經支持
一個quick google search產量javassh.org一般CGI模塊另一種語言。我確定還有其他人。
將輸出寫入文本文件並顯示文件... – Quasdunk
使命令執行一次,執行輸出並退出。然後,每次請求顯示輸出的頁面時,都會刷新頁面。此外,您可以在HTML頭標記中設置一個元首,以便自動刷新頁面 - 或者 - 如果瀏覽器支持(例如Opera),則在瀏覽器中設置刷新。 – hakre
這並不容易......像top這樣的命令不會終止,因此沒有簡單的方法將其輸出重定向到文件。 – Lopoc