Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. SNMPGet

SNMPGet

Scheduled Pinned Locked Moved Support (Russian)
5 Posts 2 Posters 13.6k Views
  • 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.
  • S
    S
    SKYnv
    wrote on last edited by
    #1

    версия netxms 1.2.3-rc4
    платформа freebsd
    собрано c --enable-unicode

    Скрипт

    sub main

    ()
    {
        transport = CreateSNMPTransport(FindObject("192.168.1.122"));
          if (transport == null)
             return -1;
    
           oid = ".1.3.6.1.2.1.1.5";  // sysname
             sysname = SNMPGet(transport, oid);
               if (sysname == null)
                  return -2;
               else
    
               println(sysname->value);
               println(sysname->name);
    }
    

    возвращает

    netxmsd: exec TestSNMP

    .1.3.6.1.2.1.1.5
    INFO: Script finished with rc=0

    тоесть либо пустую строку, либо в неверной кодировке, а значит будет пустой.

    экспериментирую дальше.

    1 Reply Last reply
    0
    • V
      V
      Victor Kirhenshtein
      wrote on last edited by
      #2

      Правильный OID для SNMPGet будет .1.3.6.1.2.1.1.5.0 - instance забыли.

      1 Reply Last reply
      0
      • S
        S
        SKYnv
        wrote on last edited by
        #3

        @victor said in SNMPGet:

        Правильный OID для SNMPGet будет .1.3.6.1.2.1.1.5.0 - instance забыли.

        хм, возможно, сейчас база данных провериться и опробую

        1 Reply Last reply
        0
        • V
          V
          Victor Kirhenshtein
          wrote on last edited by
          #4

          Ну и наверное проще использовать SNMPGetValue вместо SNMPGet. SNMPGet слишком низкоуровневый - он просто дает ответный SNMP varbind - а это происходит и в том случае, если запрашиваемый OID не существует. Просто поле type в этом случае будет равно 0x80 (NO SUCH OBJECT) или 0x81 (NO SUCH INSTANCE).

          1 Reply Last reply
          0
          • S
            S
            SKYnv
            wrote on last edited by
            #5

            @victor said in SNMPGet:

            Ну и наверное проще использовать SNMPGetValue вместо SNMPGet. SNMPGet слишком низкоуровневый - он просто дает ответный SNMP varbind - а это происходит и в том случае, если запрашиваемый OID не существует. Просто поле type в этом случае будет равно 0x80 (NO SUCH OBJECT) или 0x81 (NO SUCH INSTANCE).

            угу точно, задергался инстанс забыл

            скрипт для переименования всех нод на данные с конкретного оида.

            EnumerateNodes(FindObject(1));
            
            sub EnumerateNodes(rootObject)
            {
                foreach(o : GetObjectChildren(rootObject))
                {
                    if (classof(o) == "Node")
                    {
                        transport = CreateSNMPTransport(o);
                  if (transport == null)
                     return -1;
            
                   oid = ".1.3.6.1.2.1.1.5.0";  // sysname
                     sysname = SNMPGetValue(transport, oid);
                       if (sysname == null)
                          return -2;
                       else
                           RenameObject(o, o->ipAddr);
                           println("Object renamed to ".sysname);
                    }
                    else if (classof(o) == "NetObj")
                    {
                        EnumerateNodes(o);
                    }
                }
            }
            

            скрипт на переименование всех нод на их Ip

            EnumerateNodes(FindObject(1));
            
            sub EnumerateNodes(rootObject)
            {
                foreach(node : GetObjectChildren(rootObject))
                {
                    if (classof(node) == "Node")
                    {
                           RenameObject(node, node->ipAddr);
                           println("Object renamed to ".node->ipAddr);
                    }
                    else if (classof(node) == "NetObj")
                    {
                        EnumerateNodes(node);
                    }
                }
            }
            

            может пригодится кому.

            1 Reply Last reply
            0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            • Login

            • Don't have an account? Register

            • Login or register to search.
            Powered by NodeBB Contributors
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups