Ad Widget

Collapse

Преобразование значения (Value Mapping).

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • swq
    Member
    • Sep 2009
    • 84

    #1

    Преобразование значения (Value Mapping).

    Вопрос по Value Mapping.
    Кто нибудь знает есть ли возможность преобразовывать не только цифровые значения в символьные, но и символьные в символьные?

    Пример: считываемое значение со стримера ( IVG-7000C ) названия программы (берется из пакета провайдера) "01 BA DE DC D5 D4 D8 EF 20 C2 B2" - реальное название - "Комедия TV". Сам стример к сожалению не корректно отображает кирилицу.
    Было бы классно преобразовать:
    01 BA DE DC D5 D4 D8 EF 20 C2 B2 -> Комедия TV

    Может что можно подправить в PHP скрипте?
  • igor
    ZABBIX Support Specialist
    • Mar 2009
    • 40

    #2
    Dobrij den'!
    Spasibo za vash vopros.
    K sozaleniju takoje preobrazovanije simvolov v Zabbixe ne realizovano, no vi mozete polu4ennoje zna4enije preobrazovat' s pomoshju Linux komandi, kotoruju nado propisat' v skripte dlja user parametra.

    Comment

    • swq
      Member
      • Sep 2009
      • 84

      #3
      Спасибо за ответ, не ожидал уже
      То есть надо указывать не SNMP2 агента, а скрипт?
      Но если у меня много значений надо конвертировать, более полутора десятков? Не очень то удобно определять столько user parameters и соответственно скриптов. А в следующих версиях такие преобразования предусмотреть можно?
      Хотя, если очень хочется уже сейчас, то можно и наплодить скриптов Или я что-то не так понял?
      То есть абсолютно не понял, как передать значение полученное к примеру таким вот ключиком .1.3.6.1.4.1.4466.3.2.5.1.9.610339328.5.20512.6105 99169.100 в скрипт.
      Last edited by swq; 17-11-2009, 18:49.

      Comment

      • Hamer13
        Junior Member
        • Oct 2009
        • 28

        #4
        как вариант, скрипту передавать именно snmp oid, а он уже сам по снмп получит значение, преобразует его и отдаст заббиксу красивую строчку.

        Comment

        • swq
          Member
          • Sep 2009
          • 84

          #5
          Я знаю как сделать через агента забикса и скрипт. Тупо в скрипте указать нужный OID и преобразовать возвращаемое значение. Плохо это потому, что OIDов много и все они уникальные. Получится много скриптов.
          Я не понял как сделать это - "no vi mozete polu4ennoje zna4enije preobrazovat' s pomoshju Linux komandi, kotoruju nado propisat' v skripte dlja user parametra"
          То есть получать значение по SNMP сервером (не агентом), а потом его как то передавать в скрипт? Как передовать?
          Или я все понял правильно и делается это только через агента?

          Comment

          • dotneft
            Senior Member
            • Nov 2008
            • 699

            #6
            Originally posted by swq
            ß çíàþ êàê ñäåëàòü ÷åðåç àãåíòà çàáèêñà è ñêðèïò. Òóïî â ñêðèïòå óêàçàòü íóæíûé OID è ïðåîáðàçîâàòü âîçâðàùàåìîå çíà÷åíèå. Ïëîõî ýòî ïîòîìó, ÷òî OIDîâ ìíîãî è âñå îíè óíèêàëüíûå. Ïîëó÷èòñÿ ìíîãî ñêðèïòîâ.
            ß íå ïîíÿë êàê ñäåëàòü ýòî - "no vi mozete polu4ennoje zna4enije preobrazovat' s pomoshju Linux komandi, kotoruju nado propisat' v skripte dlja user parametra"
            Òî åñòü ïîëó÷àòü çíà÷åíèå ïî SNMP ñåðâåðîì (íå àãåíòîì), à ïîòîì åãî êàê òî ïåðåäàâàòü â ñêðèïò? Êàê ïåðåäîâàòü?
            Èëè ÿ âñå ïîíÿë ïðàâèëüíî è äåëàåòñÿ ýòî òîëüêî ÷åðåç àãåíòà?
            èñïîëüçóé External Check. â ñêðèïòå ïîëó÷àé ïàðàìåòðû: àéïè, êîììóíèòè, oid. Îáðàáàòûâàé ÷åðåç snmpget è êîíâåðòèðîâàíèå ñèìâîëîâ.

            Comment

            • swq
              Member
              • Sep 2009
              • 84

              #7
              Originally posted by dotneft
              èñïîëüçóé External Check. â ñêðèïòå ïîëó÷àé ïàðàìåòðû: àéïè, êîììóíèòè, oid. Îáðàáàòûâàé ÷åðåç snmpget è êîíâåðòèðîâàíèå ñèìâîëîâ.
              Да уж, вроде бы все просто, но что-то не получается.
              По порядку:
              Тип - внешняя проверка
              Ключ - ivg7000c.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]
              Тип информации - текст
              В конфиге сервера для external scripts прописанно /home/zabbix/bin
              все права и группы в норме.
              Скрипт:
              #!/bin/sh
              x=$(snmpget -c public -v 2c $1 $2 | awk -F: '{print $4}')
              if [ "$x" = " 01 37 54 56 " ] ; then
              echo "7 ТВ"
              fi

              Лог:
              31168:20091119:115953 Item [IVG-7000C-2:ivg7000c.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]] error: Script /home/zabbix/bin/ivg7000c.sh returned nothing.
              31168:20091119:115953 Parameter [ivg7000c.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]] is not supported by agent on host [IVG-7000C-2] Old status [0]

              Что я не правильно сделал?

              Comment

              • Hamer13
                Junior Member
                • Oct 2009
                • 28

                #8
                Originally posted by swq
                Да уж, вроде бы все просто, но что-то не получается.
                По порядку:
                Тип - внешняя проверка
                Ключ - ivg7000c.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]
                Тип информации - текст
                В конфиге сервера для external scripts прописанно /home/zabbix/bin
                все права и группы в норме.
                Скрипт:
                #!/bin/sh
                x=$(snmpget -c public -v 2c $1 $2 | awk -F: '{print $4}')
                if [ "$x" = " 01 37 54 56 " ] ; then
                echo "7 ТВ"
                fi

                Лог:
                31168:20091119:115953 Item [IVG-7000C-2:ivg7000c.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]] error: Script /home/zabbix/bin/ivg7000c.sh returned nothing.
                31168:20091119:115953 Parameter [ivg7000c.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]] is not supported by agent on host [IVG-7000C-2] Old status [0]

                Что я не правильно сделал?
                а что у вас возвращает
                Code:
                snmpget -c public -v 2c 192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.610599176.100 | awk -F: '{print "_"$4"_"}'
                ведь у вас получается что по снмп должно вернуться именно " 01 37 54 56 ", это так?
                возможно последний пробел лишний.
                Last edited by Hamer13; 19-11-2009, 11:38.

                Comment

                • dotneft
                  Senior Member
                  • Nov 2008
                  • 699

                  #9
                  я на 100% уверен что передается еще символ перевода каретки

                  #!/usr/bin/perl
                  #
                  #
                  #

                  my $ip = shift;
                  my $oid = shift;
                  my $community = shift;
                  my $print_str;

                  my $hash = {
                  "01 BA DE DC D5 D4 D8 EF 20 C2 B2" => "Комедия TV",
                  "01 37 54 56" => "7 ТВ"
                  }

                  my $result=`snmpget -c $community -v 2c $ip $oid | awk '{print \$4}'`;

                  if (defined $result ) {
                  chomp($result);
                  print $hash->{$result};
                  }

                  в итеме ключе ivg7000c.sh [1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 public]

                  Насколько я помню IP хоста передается первым аргументом всегда

                  Comment

                  • swq
                    Member
                    • Sep 2009
                    • 84

                    #10
                    Originally posted by Hamer13
                    а что у вас возвращает
                    Code:
                    snmpget -c public -v 2c 192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.610599176.100 | awk -F: '{print "_"$4"_"}'
                    ведь у вас получается что по снмп должно вернуться именно " 01 37 54 56 ", это так?
                    возможно последний пробел лишний.
                    Если скрипт запустить ручками, то он отрабатывает правильно и выдает на консоль уже подмененное значение 7 ТВ.

                    Без AWK возвращаемое значение:
                    SNMPv2-SMI::enterprises.4466.3.2.5.1.9.610338304.310.410. 610599176.100 = Hex-STRING: 01 37 54 56
                    После обработки AWK: "01 37 54 56" - без пробелов! Но тогда не отрабатывает if. С пробелами все ок.

                    Собственно дело не в этом. Повторяю - ручками с консоли все работает.

                    Comment

                    • Hamer13
                      Junior Member
                      • Oct 2009
                      • 28

                      #11
                      Originally posted by swq
                      Åñëè ñêðèïò çàïóñòèòü ðó÷êàìè, òî îí îòðàáàòûâàåò ïðàâèëüíî è âûäàåò íà êîíñîëü óæå ïîäìåíåííîå çíà÷åíèå 7 ÒÂ.

                      Áåç AWK âîçâðàùàåìîå çíà÷åíèå:
                      SNMPv2-SMI::enterprises.4466.3.2.5.1.9.610338304.310.410. 610599176.100 = Hex-STRING: 01 37 54 56
                      Ïîñëå îáðàáîòêè AWK: "01 37 54 56" - áåç ïðîáåëîâ! Íî òîãäà íå îòðàáàòûâàåò if. Ñ ïðîáåëàìè âñå îê.

                      Ñîáñòâåííî äåëî íå â ýòîì. Ïîâòîðÿþ - ðó÷êàìè ñ êîíñîëè âñå ðàáîòàåò.
                      ãì. ïîïðîáóéòå â íà÷àëå ñêðèïòà äîáàâèòü
                      Code:
                      set > /tmp/set.txt
                      âîçìîæíî â ïåðåìåííîé PATH íåò íóæíîãî ïóòè äî snmpget. òîãäà ïðîñòî óêàæèòå â íà÷àëå ñêðèïòà íóæíûå ïóòè.
                      íå óâåðåí ÷òî â ýòîé, íî â ïîõîæåé ñèòóàöèè ÿ ñ òàêîé âåñ¸ëîñòüþ ñòàëêèâàëñÿ.

                      Comment

                      • swq
                        Member
                        • Sep 2009
                        • 84

                        #12
                        Originally posted by dotneft
                        я на 100% уверен что передается еще символ перевода каретки

                        #!/usr/bin/perl
                        #
                        #
                        #

                        my $ip = shift;
                        my $oid = shift;
                        my $community = shift;
                        my $print_str;

                        my $hash = {
                        "01 BA DE DC D5 D4 D8 EF 20 C2 B2" => "Комедия TV",
                        "01 37 54 56" => "7 ТВ"
                        }

                        my $result=`snmpget -c $community -v 2c $ip $oid | awk '{print \$4}'`;

                        if (defined $result ) {
                        chomp($result);
                        print $hash->{$result};
                        }

                        в итеме ключе ivg7000c.sh [1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 public]

                        Насколько я помню IP хоста передается первым аргументом всегда
                        Там после последней скобки надо ; указать
                        my $hash = {
                        "01 BA DE DC D5 D4 D8 EF 20 C2 B2" => "Комедия TV",
                        "01 37 54 56" => "7 ТВ"
                        }

                        попробовал, тоже самое, в логе пишет что скрипт возвращает пустое значение
                        31168:20091119:154401 Item [IVG-7000C-2:test.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]] error: Script /home/zabbix/bin/test.sh returned nothing.
                        31168:20091119:154401 Parameter [test.sh [192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100]] is not supported by agent on host [IVG-7000C-2] Old status [0]

                        set > /tmp/set.txt - не помогает
                        пути указал в скрипте явно - та же фигня

                        Еще какие мнения?

                        Comment

                        • Hamer13
                          Junior Member
                          • Oct 2009
                          • 28

                          #13
                          ïîïðîáóéòå ñäåëàòü
                          Code:
                          su - zabbix -c "snmpget -c public -v 2c 192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.610599176.100"
                          èëè
                          Code:
                          sudo su - zabbix -c "snmpget -c public -v 2c 192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.610599176.100"

                          Comment

                          • Hamer13
                            Junior Member
                            • Oct 2009
                            • 28

                            #14
                            áëèí. ùàñ ïðîâåðèë - òàêè äà, ïîä ïîëüçîâàòåëåì zabbix ïðîñòî òàê íè÷åãî íå âûïîëíÿåòñÿ.
                            Code:
                            hamer@zabbix:~$ snmpget -c public -v 2c 192.168.13.1 .1.3.6.1.2.1.1.1SNMPv2-MIB::sysDescr = STRING: Linux localhost 2.4.17_mvl21-malta-mips
                            hamer@zabbix:~$ sudo su - zabbix -c "snmpget -c public -v 2c 192.168.13.1 .1.3.6.1.2.1.1.1"
                            à âñ¸ âîò ïî÷åìó:
                            Code:
                            hamer@zabbix:~$ grep zabbix /etc/passwd
                            zabbix:x:104:107::/var/run/zabbix-server/:/bin/false
                            ïîïðîáóéòå øåëë äëÿ ïîëüçîâàòåëÿ çàááèêñ ïîìåíÿòü ñ "/bin/false" íà "/bin/sh".

                            ÿ ùàñ â îäíó êîíòîðêó ñîáèðàþñü ãäå ïîõîæóþ ïðîáëåìó ñ çàááèêñîì ðåøàë, ïîñìîòðþ êàê òàì äåëàë.

                            Comment

                            • swq
                              Member
                              • Sep 2009
                              • 84

                              #15
                              Originally posted by Hamer13
                              áëèí. ùàñ ïðîâåðèë - òàêè äà, ïîä ïîëüçîâàòåëåì zabbix ïðîñòî òàê íè÷åãî íå âûïîëíÿåòñÿ.
                              Code:
                              hamer@zabbix:~$ snmpget -c public -v 2c 192.168.13.1 .1.3.6.1.2.1.1.1SNMPv2-MIB::sysDescr = STRING: Linux localhost 2.4.17_mvl21-malta-mips
                              hamer@zabbix:~$ sudo su - zabbix -c "snmpget -c public -v 2c 192.168.13.1 .1.3.6.1.2.1.1.1"
                              à âñ¸ âîò ïî÷åìó:
                              Code:
                              hamer@zabbix:~$ grep zabbix /etc/passwd
                              zabbix:x:104:107::/var/run/zabbix-server/:/bin/false
                              ïîïðîáóéòå øåëë äëÿ ïîëüçîâàòåëÿ çàááèêñ ïîìåíÿòü ñ "/bin/false" íà "/bin/sh".

                              ÿ ùàñ â îäíó êîíòîðêó ñîáèðàþñü ãäå ïîõîæóþ ïðîáëåìó ñ çàááèêñîì ðåøàë, ïîñìîòðþ êàê òàì äåëàë.
                              ó ìåíÿ øåëë â íîðìå:
                              zabbix:x:1001:1001:,,,:/home/zabbix:/bin/bash

                              èç ïîä çàááèêñà âñå çàïóñêàåòñÿ:
                              zabbix@StatMMS:~/bin$ ./test.sh 192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100
                              7 TVzabbix@StatMMS:~/bin$
                              è òàêè äà, â ìîåì ñêðèïòå åñòü ïåðåâîä ñòðîêè:
                              zabbix@StatMMS:~/bin$ ./ivg7000c.sh 192.168.100.22 1.3.6.1.4.1.4466.3.2.5.1.9.610338304.310.410.61059 9176.100
                              7 TV
                              zabbix@StatMMS:~/bin$

                              но оба скрипта возвращают серверу пустое значение

                              Comment

                              Working...