Как отобразить вывод оболочки в php - PullRequest
3 голосов
/ 27 мая 2010

Я пытаюсь написать скрипт php, который выполняет некоторые функции оболочки, такие как создание отчетов. Итак, я начинаю с отчета о дискурсе

Я хочу в следующем формате

drive path ------------total-size --------free-space

Ничего другого

Мой скрипт

<code>$output = shell_exec('df -h -T');
echo "<pre>$output
";

и его выходной сигнал подобен указанному ниже

Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda6     ext3     92G  6.6G   81G   8% /
none      devtmpfs    3.9G  216K  3.9G   1% /dev
none         tmpfs    4.0G  176K  4.0G   1% /dev/shm
none         tmpfs    4.0G  1.1M  4.0G   1% /var/run
none         tmpfs    4.0G     0  4.0G   0% /var/lock
none         tmpfs    4.0G     0  4.0G   0% /lib/init/rw
/dev/sdb1     ext3    459G  232G  204G  54% /media/Server
/dev/sdb2  fuseblk    466G  254G  212G  55% /media/BACKUPS
/dev/sda5  fuseblk    738G  243G  495G  33% /media/virtual_machines

Как я могу преобразовать этот вывод в мой forn \ matted output

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Примерно так:

<code>// Use awk to pull out the columns you actually want
$output = shell_exec('df -h -T | awk \'{print $1 " " $3 " " $5}\'');
// Split the result into an array by lines (removing the final linefeed)
$drives = split("[\r|\n]", trim($output));
// Chuck away the unused first line
array_shift($drives);

echo "<pre>drive path\ttotal-size\tfree-space\n";

foreach($drives as $drive) {
    // Explode the individual lines to get the values
    $values = explode(" ", $drive);
    echo $values[0], "\t", $values[1], "\t", $values[2], "\n";
}

echo "
";

Должен ли ты все равно идти

3 голосов
/ 27 мая 2010

Почему бы вместо этого не использовать функции PHP disk_total_space() и disk_free_space()? В противном случае, вы можете разобрать $ output в многомерный массив, используя функции preg_, преобразовать символы «g», «k», «m» в числа и суммировать столбец. В качестве альтернативы, если пространство столбца представляет собой один символ табуляции или заданное количество пробелов, вы можете просто explode() каждую строку в многомерном массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...