Ad Widget

Collapse

error: Type of received value

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Andrey_79
    Senior Member
    • Sep 2008
    • 173

    #1

    error: Type of received value

    Äîáðûé äåíü. Ïîìîãèòå ðàçîáðàòüñÿ, íàïèñàë ñêðèïò, ñêðèïò ïî òåëíåò ïîäêëþ÷àåòñÿ ê îáîðóäîâàíèþ, ñ÷èòûâàåò äàííûå è âîçâðàùàåò öåëîå ÷èñëî. Ñîçäàë ýëåìåíò äàííûõ ñ âíåøíåé ïðîâåðêîé, â êëþ÷å ïðîïèñàë íàçâàíèå ñêðèïòà zyxel_hwt1.php. Ïîñëå ïåðâîé ïðîâåðêè, ýëåìåíò äàííûõ ïåðåõîäèò èç àêòèâíîãî ñîñòîÿíèÿ â ñîñòîÿíèå "Íå ïîääåðæèâàåòñÿ".  ëîãàõ ïèøåò ñëåäóþùåå:
    Item [abonent_192.168.1.161:zyxel_hwt1.php] error: Type of received value [3] is not suitable for value type [Numeric (integer 64bit)]. Ïðè÷åì ÷èñëî 3 ñ÷èòûâàåò ïðàâèëüíî, âîò ïî÷åìó çàááèêñ íå ñ÷èòàåò åãî çà integer íå ïîíÿòíî?
  • zerg
    Member
    • Mar 2007
    • 61

    #2
    Originally posted by andrey_79
    äîáðûé äåíü. ïîìîãèòå ðàçîáðàòüñÿ, íàïèñàë ñêðèïò, ñêðèïò ïî òåëíåò ïîäêëþ÷àåòñÿ ê îáîðóäîâàíèþ, ñ÷èòûâàåò äàííûå è âîçâðàùàåò öåëîå ÷èñëî. ñîçäàë ýëåìåíò äàííûõ ñ âíåøíåé ïðîâåðêîé, â êëþ÷å ïðîïèñàë íàçâàíèå ñêðèïòà zyxel_hwt1.php. ïîñëå ïåðâîé ïðîâåðêè, ýëåìåíò äàííûõ ïåðåõîäèò èç àêòèâíîãî ñîñòîÿíèÿ â ñîñòîÿíèå "íå ïîääåðæèâàåòñÿ". â ëîãàõ ïèøåò ñëåäóþùåå:
    Item [abonent_192.168.1.161:zyxel_hwt1.php] error: Type of received value [3] is not suitable for value type [numeric (integer 64bit)]. ïðè÷åì ÷èñëî 3 ñ÷èòûâàåò ïðàâèëüíî, âîò ïî÷åìó çàááèêñ íå ñ÷èòàåò åãî çà integer íå ïîíÿòíî?
    Еще бы увидеть этот ваш скрипт было бы вообще замечательно. Телепаты в отпуске. :-)

    Comment

    • Andrey_79
      Senior Member
      • Sep 2008
      • 173

      #3
      Вот, пожалуйста, скрипт опроса количества абонентов на wi-fi точке:
      #! /usr/local/bin/php
      <?php
      $cfgServer = $argv[1]; //IP of your router
      $cfgPort = 23; //port, 23
      $cfgTimeOut = 10;
      $usenet = fsockopen($cfgServer, $cfgPort, $errno, $errstr, $cfgTimeOut);
      if(!$usenet)
      {
      echo "Connexion failed\n";
      exit();
      }
      else
      {
      fputs ($usenet, "пароль\r\n");
      fputs ($usenet, "24\r\n"); // выбор пункта меню
      fputs ($usenet, "8\r\n"); // выбор пункта меню следующего
      fputs ($usenet, "wlan association\r\n"); //ввод команды
      fputs ($usenet, "exit\r\n"); выход из первого меню
      fputs ($usenet, "99\r\n"); отключение от точки

      $test='';
      while (!feof($usenet)) // обработка результата
      {
      $test.=fgets($usenet);
      }
      $test1=substr($test,(strpos($test,"Total:")+6),3); // точка выводит информацию вида Total: 5 - т.е. в данный момент на точке 5 абонентов, фукцией, substr($test,(strpos($test,"Total:")+6),3), нахожу позицию первой буквы слова "Total:" прибавляю 6 для получения позиции ":" и после нее считываю количество абонентов, отвел для этого 3 позиции.
      echo $test1;
      }
      ?>

      Из командной строки скрипт исправно работает.

      Comment

      • zerg
        Member
        • Mar 2007
        • 61

        #4
        Originally posted by Andrey_79
        Вот, пожалуйста, скрипт опроса количества абонентов на wi-fi точке:
        #! /usr/local/bin/php
        <?php
        $cfgServer = $argv[1]; //IP of your router
        $cfgPort = 23; //port, 23
        $cfgTimeOut = 10;
        $usenet = fsockopen($cfgServer, $cfgPort, $errno, $errstr, $cfgTimeOut);
        if(!$usenet)
        {
        echo "Connexion failed\n";
        exit();
        }
        else
        {
        fputs ($usenet, "пароль\r\n");
        fputs ($usenet, "24\r\n"); // выбор пункта меню
        fputs ($usenet, "8\r\n"); // выбор пункта меню следующего
        fputs ($usenet, "wlan association\r\n"); //ввод команды
        fputs ($usenet, "exit\r\n"); выход из первого меню
        fputs ($usenet, "99\r\n"); отключение от точки

        $test='';
        while (!feof($usenet)) // обработка результата
        {
        $test.=fgets($usenet);
        }
        $test1=substr($test,(strpos($test,"Total:")+6),3); // точка выводит информацию вида Total: 5 - т.е. в данный момент на точке 5 абонентов, фукцией, substr($test,(strpos($test,"Total:")+6),3), нахожу позицию первой буквы слова "Total:" прибавляю 6 для получения позиции ":" и после нее считываю количество абонентов, отвел для этого 3 позиции.
        echo $test1;
        }
        ?>

        Из командной строки скрипт исправно работает.
        Я так подозреваю у вас string возвращается т.к. "Число абонентов"+3пробела - это далеко не integer.

        Попробуйте по манипулировать "Type of information" в Zabbix(Numeric(unsigned)/Numeric(float)/Character/Text).

        В общем случае "Type of received value" - рассказывает всё.

        Из других вариантов могу предложить переписать скрипт на чём-нибудь более православном - expect,perl,shell? :-)

        Comment

        • Andrey_79
          Senior Member
          • Sep 2008
          • 173

          #5
          Ñïàñèáî. Âû îêàçàëèñü ïðàâû, ÿ äîáàâèë â ïðîãðàììå ïåðåä âûâîäîì ðåçóëüòàòà $test1=(int)$test1 è âñå íà÷àëî ðàáîòàòü.

          Comment

          Working...