使用NEt:SNMP查找Windows中的内存总利用率总和

时间:2012-01-16 10:28:05

标签: windows perl snmp net-snmp

好吧,我已经为这个过程挖出了单独的OID,并且我能够获得每个OID的内存使用权,但问题是我如何获得整个过程的使用权。 问题是个别流程使用的OID是1.3.6.1.2.1.25.5.1.1.2.X
现在X可以是用于识别流程并为其添加更多难度的任何数字, 它没有按顺序排列。例如, 我可以按以下顺序获得OID

1.3.6.1.2.1.25.5.1.1.1.1 = INTEGER:971526993 1.3.6.1.2.1.25.5.1.1.1.4 = INTEGER:3562884 1.3.6.1.2.1.25.5.1.1.1.296 = INTEGER:496 1.3.6.1.2.1.25.5.1.1.1.340 = INTEGER:12804 1.3.6.1.2.1.25.5.1.1.1.344 = INTEGER:68178 1.3.6.1.2.1.25.5.1.1.1.348 = INTEGER:40 1.3.6.1.2.1.25.5.1.1.1.372 = INTEGER:3535 1.3.6.1.2.1.25.5.1.1.1.424 = INTEGER:3985009 1.3.6.1.2.1.25.5.1.1.1.436 = INTEGER:27875212 1.3.6.1.2.1.25.5.1.1.1.440 = INTEGER:72218 1.3.6.1.2.1.25.5.1.1.1.592 = INTEGER:4820



等等。 。 。

目前我的perl脚本是这样的:

      my ($session, $error) = Net::SNMP->session(
           -hostname  => shift || 'hostname',
              -community => shift || 'public',
      );

      if (!defined $session) {
                 printf "ERROR: %s.\n", $error;
                    exit 1;
            }
      //$OId_number will hold the OId of the particular process       
      my $result = $session->get_request(-varbindlist => [ $OID_number ],);

      if (!defined $result) {
                       printf "ERROR: %s.\n", $session->error();
                          $session->close();
                             exit 1;
       }

       printf "The Memory allocated  for process is  '%s' is %s.\n",
       $session->hostname(), $result->{$OID_number};
       $session->close();
       exit 0;

1 个答案:

答案 0 :(得分:0)

使用Net::SNMP's get_bulk_request怎么样?您应该在一次请求时获得所有数据。