2011-08-01 41 views
1

我需要一種方法來在網頁上顯示linux shell輸出。我知道有很多webshel​​l,但沒有一個讓我顯示時間變化的輸出(命令如:top,watch ...),我需要一個基於shell的網絡分析器,所以我無法每次都啓動和停止它,因爲它需要連續運行。 有沒有簡單的方法來做到這一點?我不需要與shell的任何交互,只需要給定命令的輸出。shell輸出到web

提前 Lopoc

+0

將輸出寫入文本文件並顯示文件... – Quasdunk

+0

使命令執行一次,執行輸出並退出。然後,每次請求顯示輸出的頁面時,都會刷新頁面。此外,您可以在HTML頭標記中設置一個元首,以便自動刷新頁面 - 或者 - 如果瀏覽器支持(例如Opera),則在瀏覽器中設置刷新。 – hakre

+0

這並不容易......像top這樣的命令不會終止,因此沒有簡單的方法將其輸出重定向到文件。 – Lopoc

回答

6

在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是要顯示的行數)。不知道這對你是否重要,但保持在你的頭腦裏很好。

1

根據您啓動程序,應該有開關一樣

$ top -n1 

這會給你你正在尋找一個快照的形式輸出。

只需使輸出的php腳本在您需要的秒數後刷新自己。

這樣做的一種流行方式,在大多數瀏覽器的工作原理是添加所謂的Meta Refresh

<meta http-equiv="refresh" content="5"> 

實例:五秒後刷新頁面實際。

0

如果你不想學習,你可能想看看到已經支持