Чтобы ExternalParameter учитывали код возврата.

Started by user318, September 07, 2012, 06:54:09 PM

Previous topic - Next topic

user318

Было бы хорошо, если бы ExternalParameter учитывали код возврата. И если он не 0, то считалось, что параметр не удалось прочитать. А то сейчас вроде если скритп возвращает пустую сточку, например, то в консоли я вижу, что пришёл какой-то мусор. А хотелось бы иметь возможность из скрипта "сообщать" о сбое при опросе параметра.

SKYnv

Quote from: user318 on September 07, 2012, 06:54:09 PM
Было бы хорошо, если бы EternalParameter учитывали код возврата. И если он не 0, то считалось, что параметр не удалось прочитать. А то сейчас вроде если скритп возвращает пустую сточку, например, то в консоли я вижу, что пришёл какой-то мусор. А хотелось бы иметь возможность из скрипта "сообщать" о сбое при опросе параметра.
internal

eternal эт о вечность ))

ну так вы проверяйте значение которое приходит на null "" или " "

вот не далее как сегодня писал скрипт

sub main()
{
    transport = CreateSNMPTransport($node);
      if (transport == null)
         return -1;
           
       oid_loc = ".1.3.6.1.2.1.1.6.0";  // location
       oid_uptime = ".1.3.6.1.2.1.1.3.0";  // uptime
       oid_name = ".1.3.6.1.2.1.1.5.0";  // sysname

         location = SNMPGetValue(transport, oid_loc);
         sysname = SNMPGetValue(transport, oid_name);
         uptime = SNMPGetValue(transport, oid_uptime);

           if (location != null && location !="" && location!=" ")
            {
               RenameObject($node, location);
            //   trace(1 ,"Object renamed to ".location);
            }
            else
             {
               RenameObject($node, $node->ipAddr);
             }

            if (sysname != null && sysname !="" && sysname !=" ")
             {
               SetCustomAttribute($node, "sysname", sysname);
           //    trace(1 ,"Set custom attribute sysname to ".sysname);
             }

             if (uptime != null)
              {
               SetCustomAttribute($node, "uptime", SecondsToUptime(uptime/100));
           //    trace(1 ,"Set custom attribute uptime ".SecondsToUptime(uptime/100));
              }


который не работал как нужно без нескольких доработок
во-первых проверки (sysname != null && sysname !="" && sysname !=" ")
хоть по стандарту там и нультерминальная строка, на практике там может быть хрен знает что, но данная проверка позволила избавиться от всех ошибок что возникали.
и во-вторых SecondsToUptime(uptime/100), так-как было лень писать процедеру для перевода тиков в аптайм взял готовую для секунд и зделал тики секундуми )

user318

Quoteinternal
Нет, external. В агенте задаются параметры, которые скрипт генерирует.

Quoteну так вы проверяйте значение которое приходит на null "" или " "
Ну это надо к каждому параметру дописысвать ещё обработчик. Это как бы двойная работа. Я и так проверяю на ошибки в скрипте. Вообще логично, если скрипт завершился с ошибкой, то навряд ли он что-то хорошее должен вернуть.