Jump to content
Калькуляторы

perl snmp

Не могу понять почему не работает может глаз замылился. Вот кусок кода

sub snmpPort {
  my $ipcomm = $_[0];
  my $port = $_[1];
  print $ipcomm,"-",$port,"\n";
  my ( $session, $error ) = Net::SNMP->session (  Hostname => $ipcomm,Community => "private",version => 2);
  die "session error: $error" unless ( $session );
  my( @list);
  push( @list, ("1.3.6.1.2.1.2.2.1.7.".$port, INTEGER, 2));
  print Dumper(\@list);
  my $result = $session->set_request( -varbindlist => [@list]);
  print "request error: ".$session->error unless (defined $result),"\n";
}

Вот результат исполнения

10.10.250.66-12
$VAR1 = [
         '1.3.6.1.2.1.2.2.1.7.12',
         'INTEGER',
         2
       ];

root@billing:/scripts# snmpget -v2c -c private 10.10.250.66 1.3.6.1.2.1.2.2.1.7.12
iso.3.6.1.2.1.2.2.1.7.12 = INTEGER: 1
root@billing:/scripts# snmpset -v2c -c private 10.10.250.66 1.3.6.1.2.1.2.2.1.7.12 i 2
iso.3.6.1.2.1.2.2.1.7.12 = INTEGER: 2
root@billing:/scripts# snmpget -v2c -c private 10.10.250.66 1.3.6.1.2.1.2.2.1.7.12
iso.3.6.1.2.1.2.2.1.7.12 = INTEGER: 2

Почему порт не ушел в даун ?

Share this post


Link to post
Share on other sites

Пусто в дампе

Share this post


Link to post
Share on other sites

У меня этот код работает

 

[igor@second ~]$ snmpget -v2c -c gfcfltyf 192.168.3.65 1.3.6.1.2.1.2.2.1.7.12
IF-MIB::ifAdminStatus.12 = INTEGER: up(1)
[igor@second ~]$ perl test.pl 
192.168.3.65-12
$VAR1 = [
         '1.3.6.1.2.1.2.2.1.7.12',
         2,
         2
       ];
[igor@second ~]$ snmpget -v2c -c gfcfltyf 192.168.3.65 1.3.6.1.2.1.2.2.1.7.12
IF-MIB::ifAdminStatus.12 = INTEGER: down(2)

Share this post


Link to post
Share on other sites

use Net::SNMP qw(:snmp);

так объявляли ?

Share this post


Link to post
Share on other sites

спасибо попробую завтра

Share this post


Link to post
Share on other sites

у вас

,"\n"

обессмысливает unless, т.к. в этом случае его аргумент выполняется true. Поэтому ошибки у вас не отображаются в независимости от их наличия. Сделайте лучше так

defined $result ? print "\n" : print "request error: ".$session->error."\n";

Share this post


Link to post
Share on other sites

ну дык

 

$ perl -e 'use Net::SNMP ; printf "-%s-\n", INTEGER'
-2-
$ perl -e 'use Net::SNMP qw(:snmp); printf "-%s-\n", INTEGER'-
-INTEGER-

 

константы то оно откуда возьмет ?

Share this post


Link to post
Share on other sites

спасибо всем еще раз

Share this post


Link to post
Share on other sites

Все заработало.Действительно не видело константы.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this