имеется sysDescr.0 = STRING: DES-2108 V2.00.01
Читаю по snmp getnext() табличку IF-MIB
Хочется считать все сразу , но 2108 корректно отдает только 11 заданных параметров,
при 12 выдает только первую строчку и ругается напр так
6,100000000,,1,1,434,785787887,169088576,166,1574543228,0,0,
Timeout (parse header: message overflow: 257 len + 4 delta > 5 len)
Просьба-хотелось бы сразу считывать всю IF-MIB, а не по частям
Пример софта для контроля
(первый параметр -свич, второй-коммунити)
#!/usr/bin/perl
use SNMP 1.8;
my $host = shift || localhost;
my $comm = shift || public;
my $sess = new SNMP::Session ( DestHost => $host, Community => $comm );
my @mass;
@mass=([ifType],[ifSpeed],[ifPhysAddress],
[ifAdminStatus],[ifOperStatus],[ifLastChange],
[ifInOctets],[ifInUcastPkts],[ifInNUcastPkts],[ifOutOctets],
[ifInDiscards]);
print "GetNext äëÿ 11 ïàðàìåòðîâ :\n";
snmp_next(\@mass);
print "GetNext äëÿ 12 ïàðàìåòðîâ :\n";
@mass=([ifType],[ifSpeed],[ifPhysAddress],
[ifAdminStatus],[ifOperStatus],[ifLastChange],
[ifInOctets],[ifInUcastPkts],[ifInNUcastPkts],[ifOutOctets],
[ifInDiscards],[ifOutDiscards]);
snmp_next(\@mass);
exit;
sub snmp_next {
my $ref_mass = shift;
my @mass=@$ref_mass;
my $vars = new SNMP::VarList(@mass);
for (my @vals = $sess->getnext($vars);
($vars->[0]->tag =~ /ifType/) and not $sess->{ErrorStr};
@vals = $sess->getnext($vars)) {
for ( my $i=0;$i<scalar @mass;$i++){
print "$vals[$i],";
};
print "\n";
};
print $sess->{ErrorStr},"\n" if($sess->{ErrorStr});
};
|