【问题标题】:How to get linux partition info (df command) from a web app如何从 Web 应用程序获取 linux 分区信息(df 命令)
【发布时间】:2012-12-20 23:24:45
【问题描述】:

我的朋友有某种管理面板,他在其中显示来自多个服务器的信息。他正在使用cPanel XML api 显示一些东西,例如服务器负载平均值,代码如下所示:

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,但我发现更接近的是检索帐户磁盘使用情况。但我需要来自以 root 身份在 ssh 中运行的“df”命令的信息。 什么是更简单和最安全的方法?因为我需要从多台服务器而不是从运行代码的服务器获取 df 命令输出。

【问题讨论】:

    标签: php ssh cpanel partitioning whm


    【解决方案1】:

    为什么需要以“root”身份运行 df?我当然可以在我的 Linux 机器上以自己的身份运行它? (是的,这是一个问题,而不是一个答案)

    假设您对机器具有完全访问权限,您可能会设置一个用户帐户“df”,它在 sudoers 中列出,带有!authenticate 属性(因此它可以在没有密码的情况下使用 sudo),然后是ssh df@${machine} sudo df 您还可以限制 sudo 以便 df" 用户只能执行 df,而不能执行,例如 rm -rf /adduser blah

    当然,设置您的 ssh 以使用公钥/私钥挑战,而不是使用您的 php 代码在源代码中设置密码 - 如果没有别的,因为它使它更灵活,并且您不必更新如果您决定更改密码,请查看来源。

    【讨论】:

    • 你是对的“df”显示与任何其他用户相同,无论如何我想我最终会在每台服务器上添加一个 df.php 到 /usr/local/cpanel/whostmgr/docroot/ 和然后在 xmlapi.php 上做一些修改来获取信息。
    • 如果某些系统必须是 root 才能查看(某些)驱动器上的可用空间,我不会感到惊讶。但是这些系统可能不会让您远程记录这些数据,因为您无法将其视为普通用户的原因是所有者不想让您知道...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多