carloswph/phell

数据格式下获取信息和处理Linux服务器上常见任务的包装器。

v1.1.2 2021-06-10 13:56 UTC

This package is auto-updated.

Last update: 2024-09-10 21:13:50 UTC


README

Linux系统监控工具提供了一种全面的方式来检查和监控任何服务器。然而,并非每个人都想或能够一直检查命令行。此外,由于这些命令通常返回未格式化的字符串,以更友好的方式处理或存储这些数据变得具有挑战性。

此包装器提供类来执行和检索常见的shell系统命令,并以PHP友好的方式返回数据。可用的类/命令

  • df
  • man
  • free
  • lscpu
  • lsmem
  • vmstat (无参数)

安装

可以使用Composer安装此包:composer require carloswph/phell

用法

使用Composer,您需要使用与您要获取和解析的数据对应的shell命令的类。此外,您可能还想使用枚举类Params(),它提供了常数来修改和应用于您正在处理的shell命令的参数。

use Phell\Df;
use Phell\Params;

require __DIR__ . '/vendor/autoload.php';

$df = new Df([
	Params::HUMAN_READABLE
]);
var_dump($df->get()); // Getting a parsed array of results for the shell command

/*
RESULTS:

array(10) {
  [0]=>
  array(6) {
    ["filesystem"]=>
    string(4) "udev"
    ["blocks/size"]=>
    string(4) "1.9G"
    ["used"]=>
    string(1) "0"
    ["available"]=>
    string(4) "1.9G"
    ["use_percentage"]=>
    string(2) "0%"
    ["mounted_on"]=>
    string(4) "/dev"
  }
  [1]=>
  array(6) {
    ["filesystem"]=>
    string(5) "tmpfs"
    ["blocks/size"]=>
    string(4) "382M"
    ["used"]=>
    string(4) "1.8M"
    ["available"]=>
    string(4) "380M"
    ["use_percentage"]=>
    string(2) "1%"
    ["mounted_on"]=>
    string(4) "/run"
  }
  [2]=>
  array(6) {
    ["filesystem"]=>
    string(9) "/dev/sda3"
    ["blocks/size"]=>
    string(4) "449G"
    ["used"]=>
    string(3) "31G"
    ["available"]=>
    string(4) "395G"
    ["use_percentage"]=>
    string(2) "8%"
    ["mounted_on"]=>
    string(1) "/"
  }
  [3]=>
  array(6) {
    ["filesystem"]=>
    string(5) "tmpfs"
    ["blocks/size"]=>
    string(4) "1.9G"
    ["used"]=>
    string(4) "156M"
    ["available"]=>
    string(4) "1.8G"
    ["use_percentage"]=>
    string(2) "9%"
    ["mounted_on"]=>
    string(8) "/dev/shm"
  }
  [4]=>
  array(6) {
    ["filesystem"]=>
    string(5) "tmpfs"
    ["blocks/size"]=>
    string(4) "5.0M"
    ["used"]=>
    string(4) "4.0K"
    ["available"]=>
    string(4) "5.0M"
    ["use_percentage"]=>
    string(2) "1%"
    ["mounted_on"]=>
    string(9) "/run/lock"
  }
  [5]=> ... and so on...
}

*/

使用 'man' 命令

使用 'man' 命令与其他命令略有不同。为了获得响应,必须提供所需手册的bash命令。因此,在实例化类时,必须传递bash命令作为参数。

use Phell\Man;
use Phell\Params;

require __DIR__ . '/vendor/autoload.php';


$cpu = new Man('dir');
echo $cpu->toHtml(); // Generate the response in readable HTML
var_dump($cpu->get()); // Regular response in JSON
var_dump($cpu->toArray()); // Parsed response in PHP array, in which subtitles of the manual are keys

添加新命令

当然,您可以使用主要抽象类来管理任何其他shell命令并添加新类。为此,唯一必需的方法是process(),使用受保护的可见性,以及唯一的必要属性是$command,其中您将声明您的新shell命令,如下所示

namespace Phell;

/**
 * 
 */
class NewCommand extends AbstractCommand
{
	protected $command = 'newcommand';

	protected function process($shell)
	{
		// Process and parsing
	}
}

此外,尽管您始终可以在新命令中找到其他方式来处理附加参数,但我们鼓励您使用枚举类Params来执行此操作——因为一些必要的参数可能就在那里。

可用命令

此包仍在开发中,因此最终将添加新命令。请定期检查README文件并更新包以获取对它们的访问权限。

可用命令: df, free, lscpu, lsmem, vmstat

进行中: iostat, uptime, groups