Запуск php скриптов на сервере pfSense
-
Приветствую!
Есть задача, мониторить все и вся :)
Конкретно сейчас есть задача мониторить состояние шлюзов, потери и т.п. Чтобы не изобретать велосипед, хотел в консоли запустить скрипт (например /usr/local/www/widgets/widgets/gateways.widget.php), но вот не задача, не работает. Попробовал его видоизменить до такого состояния:$nocsrf = true; //require_once("/usr/local/www/guiconfig.inc"); require_once("/etc/inc/pfsense-utils.inc"); require_once("/etc/inc/functions.inc"); $a_gateways = return_gateways_array(); $gateways_status = array(); $gateways_status = return_gateways_status(true); $counter = 1; foreach ($a_gateways as $gname => $gateway) { echo $gateway['name']; if (is_ipaddr($gateway['gateway'])) echo $gateway['gateway']; else echo get_interface_gateway($gateway['friendlyiface']); if ($gateways_status[$gname]) echo $gateways_status[$gname]['delay']; else echo "Gathering data"; if ($gateways_status[$gname]) echo $gateways_status[$gname]['loss']; else echo "Gathering data"; if ($gateways_status[$gname]) { if (stristr($gateways_status[$gname]['status'], "down")) { $online = "Offline"; } elseif (stristr($gateways_status[$gname]['status'], "loss")) { $online = "Warning, Packetloss"; } elseif (stristr($gateways_status[$gname]['status'], "delay")) { $online = "Warning, Latency"; } elseif ($gateways_status[$gname]['status'] == "none") { $online = "Online"; } } else { $online = "Gathering data"; } echo "$online"; $counter++; } ?>
Но и тут засада. Ошибками закидывает. Причем если бы были ошибки синтаксиса-проблем небыло-бы.
Кто-нибудь может подсказать, как это дело провернуть? :) -
#!/usr/bin/php -f var_dump($argv); ?>
-
Сделал так:
#!/usr/local/bin/php -f var_dump($argv); $nocsrf = true; //require_once("/usr/local/www/guiconfig.inc"); require_once("/etc/inc/pfsense-utils.inc"); require_once("/etc/inc/functions.inc"); $a_gateways = return_gateways_array(); $gateways_status = array(); $gateways_status = return_gateways_status(true); $counter = 1; foreach ($a_gateways as $gname => $gateway) { echo $gateway['name']; if (is_ipaddr($gateway['gateway'])) echo $gateway['gateway']; else echo get_interface_gateway($gateway['friendlyiface']); if ($gateways_status[$gname]) echo $gateways_status[$gname]['delay']; else echo "Gathering data"; if ($gateways_status[$gname]) echo $gateways_status[$gname]['loss']; else echo "Gathering data"; if ($gateways_status[$gname]) { if (stristr($gateways_status[$gname]['status'], "down")) { $online = "Offline"; } elseif (stristr($gateways_status[$gname]['status'], "loss")) { $online = "Warning, Packetloss"; } elseif (stristr($gateways_status[$gname]['status'], "delay")) { $online = "Warning, Latency"; } elseif ($gateways_status[$gname]['status'] == "none") { $online = "Online"; } } else { $online = "Gathering data"; } echo "$online"; $counter++; } ?>
результат тот-же:
array(1) {
[0]=>
string(10) "./test.php"
}Fatal error: Call to undefined function get_configured_interface_with_descr() in /etc/inc/gwlb.inc on line 341
-
При запуске без var_dump($argv);
вот этого:array(1) { => string(10) "./test.php" }
небыло
-
Не в Var_dump счастье. В начале (1 строка) консольного php скрипта должно стоять '#!/usr/local/bin/php -f '. Вардамп был для примера.
-
Это-то я понимаю…
этой строчки небыло раньше. т.к. я запускал скрипт так: php test.php.
Добавление данной строчки, никакого результата не дало, кроме как появилась возможность запускать так: ./test.phpВсе горе то (как мне кажется) в этом:
Fatal error: Call to undefined function get_configured_interface_with_descr() in /etc/inc/gwlb.inc on line 341Но в веб интерфейсе-то он работает.. :(
-
Это-то я понимаю…
этой строчки небыло раньше. т.к. я запускал скрипт так: php test.php.
Добавление данной строчки, никакого результата не дало, кроме как появилась возможность запускать так: ./test.phpВсе горе то (как мне кажется) в этом:
Fatal error: Call to undefined function get_configured_interface_with_descr() in /etc/inc/gwlb.inc on line 341Но в веб интерфейсе-то он работает.. :(
1 Да, верхняя строчка для запуска просто файла.
2 Нужно найти где декларируется недостающая функция и выполнить include. В веб-интерфейсе возможно что-то автоматически подключается. Файлы лежат в /etc/inc -
В общем так..
если найдутся психи, под стать мне, решившие в консоли выдергивать данный, аналогичные тем, что висят в веб интерфейсе, знайте, что действительно необходимо подключать файлы из /etc/inc/.
В моем случае это:
/etc/inc/globals.inc
/etc/inc/config.inc
/etc/inc/util.inc
/etc/inc/pfsense-utils.inc
/etc/inc/functions.inc