Navigation

    Netgate Discussion Forum
    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search

    Запуск php скриптов на сервере pfSense

    Russian
    2
    8
    3140
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      a.kozlov last edited by

      Приветствую!
      Есть задача, мониторить все и вся :)
      Конкретно сейчас есть задача мониторить состояние шлюзов, потери и т.п. Чтобы не изобретать велосипед, хотел в консоли запустить скрипт (например /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++;
      }
      ?>
      
      

      Но и тут засада. Ошибками закидывает. Причем если бы были ошибки синтаксиса-проблем небыло-бы.
      Кто-нибудь может подсказать, как это дело провернуть? :)

      1 Reply Last reply Reply Quote 0
      • D
        dvserg last edited by

        #!/usr/bin/php -f
        var_dump($argv);
        ?>
        

        SquidGuardDoc EN  RU Tutorial
        Localization ru_PFSense

        1 Reply Last reply Reply Quote 0
        • A
          a.kozlov last edited by

          Сделал так:

          
          #!/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

          1 Reply Last reply Reply Quote 0
          • A
            a.kozlov last edited by

            При запуске без var_dump($argv);
            вот этого:

            array(1) {
            
                =>
            
              string(10) "./test.php"
            }
            

            небыло

            1 Reply Last reply Reply Quote 0
            • D
              dvserg last edited by

              Не в Var_dump счастье. В начале (1 строка)  консольного php скрипта должно стоять '#!/usr/local/bin/php -f '. Вардамп был для примера.

              SquidGuardDoc EN  RU Tutorial
              Localization ru_PFSense

              1 Reply Last reply Reply Quote 0
              • A
                a.kozlov last edited by

                Это-то я понимаю…
                этой строчки небыло раньше. т.к. я запускал скрипт так: 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 Reply Last reply Reply Quote 0
                • D
                  dvserg last edited by

                  @a.kozlov:

                  Это-то я понимаю…
                  этой строчки небыло раньше. т.к. я запускал скрипт так: 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

                  SquidGuardDoc EN  RU Tutorial
                  Localization ru_PFSense

                  1 Reply Last reply Reply Quote 0
                  • A
                    a.kozlov last edited by

                    В общем так..
                    если найдутся психи, под стать мне, решившие в консоли выдергивать данный, аналогичные тем, что висят в веб интерфейсе, знайте, что действительно необходимо подключать файлы из /etc/inc/.
                    В моем случае это:
                    /etc/inc/globals.inc
                    /etc/inc/config.inc
                    /etc/inc/util.inc
                    /etc/inc/pfsense-utils.inc
                    /etc/inc/functions.inc

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post