PHP-интерфейс для таблиц IP-маршрутизации ядра

Я пытаюсь реализовать интерфейс CRUD для таблиц IP-маршрутизации, и я застрял при выполнении команд unix с помощью PHP. Я попытался повторить вывод команды route с помощью команды shell_exec, но результат нулевой.

echo shell_exec("route"); // Outputs nothing

Я также пробовал несколько других комбинаций, таких как:

echo exec("route"); // also outputs nothing
// and
$lastLine = system("route", $output);
echo $lastLine; // nothing
echo $output; // 127

Итак, как мне выполнить команду маршрута из PHP?

Спасибо!


person VladN    schedule 11.11.2011    source источник
comment
Сопротивляясь желанию комментировать ваш выбор языков программирования, могу ли я предложить использовать более новые инструменты ip (часть iproute или iproute2) вместо старой команды route. Например: ip route show печатает вашу таблицу маршрутизации. ip route help для получения дополнительной информации. Он (А) гораздо эффективнее и (Б) его легче анализировать.   -  person tylerl    schedule 11.11.2011
comment
Кроме того, ошибка 127 является стандартным возвратом, когда программа, которую вы пытались запустить, не была найдена.   -  person tylerl    schedule 11.11.2011


Ответы (2)


Попробуйте сначала из консоли

whereis route

Затем выполните команду route с полным путем

В основном, я думаю, это из-за PATH env не включает /sbin:

person azat    schedule 11.11.2011
comment
Это решило мою проблему. Используя shell_exec(/sbin/route); Я получаю то, что ожидаю. Спасибо! - person VladN; 11.11.2011

Просто попробуй

$outPrint = `route` // not simple quotes!;
echo $outPrint;

P.S.: "`" - это тильда. Консольный ключ в большем количестве игр :)

person Dmitry    schedule 11.11.2011
comment
Использование оператора обратной кавычки идентично shell_exec(), и он уже пробовал это. См. ru2.php.net/manual/en/language.operators.execution .php - person azat; 11.11.2011