Перейти к содержимому
Калькуляторы

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пусто в дампе

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

[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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

use Net::SNMP qw(:snmp);

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у вас

,"\n"

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну дык

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.