2012-12-20 43 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用户才能查看(某些)驱动器上的可用空间,那么我不会感到惊讶。但是这些系统可能不会让你远程记录这些数据,因为你不能看到它是普通用户的原因是,所有者不希望你知道...... –

相关问题