2012-12-20 91 views
0

我的朋友有一些管理面板,他顯示來自多個服務器的信息。他是用cPanel XML api到例如顯示幾件事情的服務器平均負載,代碼看起來是這樣的:如何從一個web應用程序獲取Linux分區信息(df命令)

include("xmlapi.php"); 

$conf = simplexml_load_file("servers.xml"); 

foreach ($conf->server as $server) { 
    $xmlapi = new xmlapi($server->ip); 
    $xmlapi->set_debug(1); 
    $xmlapi->hash_auth($server->user, $server->accesshash); 
    $loadavg = $xmlapi->loadavg(); 

    print $server->ip . " - " . $loadavg->one . " - " . $loadavg->five . " - " . $loadavg->fifteen; 
} 

我一直在閱讀wiki但我發現更接近的是檢索帳戶的磁盤使用情況。但我需要來自「df」命令的信息以root身份在ssh中運行。 做什麼會更容易和最安全的方法?因爲我需要從多個服務器獲取df命令輸出,而不是從運行代碼的那個服務器獲得。

回答

0

爲什麼你需要運行df作爲「root」?我當然可以在我的Linux機器上運行它了嗎? (是的,這是一個問題,不是一個答案)

假設你已經完全進入機器,你很可能建立一個useraccount「DF」,即在sudoers中列出了!authenticate屬性(因此它可以須藤不密碼),然後ssh [email protected]${machine} sudo df 您還可以限制須藤使DF」用戶只能做DF,而不是,例如rm -rf /adduser blah

當然並設置SSH使用公鑰/私鑰challeng而不是使用你的php代碼在源代碼中輸入密碼 - 如果沒有其他內容,因爲它使它更加靈活,並且如果你決定更改密碼,則不必更新源代碼。

+0

你說得對「df」與任何其他用戶都一樣,無論如何,我想我最終會在每臺服務器上的/ usr/local/cpanel/whostmgr/docroot /上添加一個df.php,然後在xmlapi.php獲取信息。 –

+0

如果系統中必須有root用戶才能查看(某些)驅動器上的可用空間,那麼我不會感到驚訝。但是這些系統可能不會讓你遠程記錄這些數據,因爲你不能看到它是普通用戶的原因是,所有者不希望你知道...... –

相關問題