вывод оболочки на веб - PullRequest
       12

вывод оболочки на веб

1 голос
/ 01 августа 2011

Мне нужен способ отображения вывода оболочки Linux на веб-странице. Я знаю, что есть много веб-оболочек, но ни одна из них не позволяет мне отображать вывод, изменяющий время (с такими командами, как: top, watch ...), мне нужен сетевой анализатор на основе оболочки, чтобы я не мог запускать и останавливать его каждый раз, потому что он нужно бежать непрерывно. Есть ли простой способ сделать это? Мне не нужно никакого взаимодействия с оболочкой, просто вывод данной команды.

спасибо заранее Lopoc

Ответы [ 4 ]

6 голосов
/ 01 августа 2011

В PHP вы можете использовать exec(): http://www.php.net/manual/en/function.exec.php

$last = exec('ls', $o, $r);

$o будет удерживать вывод, а $r будет содержать код возврата, а $last будет удерживать последнюю строкувыход.В общем, вы обычно будете использовать его следующим образом:

$last = exec('ls', $o, $r);
if ($r != 0)
{
  print 'Error running command';
  exit($r);
}
else
  print implode("\n", $o);

top - интерактивная программа, команда будет продолжаться вечно, а PHP / exec () будет продолжать ждать ее завершения.Вы можете использовать top -b -n1 для «пакетного режима».См. top(1) для получения дополнительной информации об аргументах top.

Если вы хотите более общее решение, которое будет работать для любой команды, вы можете использовать popen() (или proc_open()), запущенный из сценария xmlrpc.Это гораздо более сложная установка, требующая некоторых знаний об управлении процессами в UNIX.Делать это правильно - далеко не тривиально ...

PS : аргументы top варьируются от ОС к ОС.В Linux вы используете top -b -n 1, во FreeBSD это top -b 999 (где 999 - количество отображаемых строк).Не уверен, имеет ли это значение для вас, но хорошо держать затылок.

1 голос
/ 01 августа 2011

В зависимости от программы, которую вы запускаете, должны быть переключатели типа

$ top -n1

, которые дадут вам искомый вывод в виде снимка.

Просто сделайтевыходной php-скрипт обновляется через необходимое количество секунд.

Популярный способ сделать это, работающий в большинстве браузеров, - добавить так называемое Meta Refresh :

<meta http-equiv="refresh" content="5">

Пример: обновить текущую страницу через пять секунд.

0 голосов
/ 01 августа 2011

A быстрый поиск в Google выход javassh.org . Я уверен, что есть другие.

0 голосов
/ 01 августа 2011

Если вы не хотите изучать другой язык, вы можете обратиться к общему модулю CGI, который уже поддерживает

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