Наваял вот такую простенькую вещь:% cat snmp_get
#!/usr/bin/perl -w
# vi:ts=4:sw=4
use strict;
use Getopt::Long;
use SNMP::Simple;
our %opt = (
DestHost => 'localhost',
Community => 'public',
Version => 1,
Timeout => 1_000_000,
);
our $oid;
GetOptions(
'h|host=s' => \$opt{DestHost},
'c|community=s' => \$opt{Community},
'v|version=i' => \$opt{Version},
't|timeout=i' => \$opt{Timeout},
'o|oid=s' => \$oid,
);
our $snmp = SNMP::Simple->new(%opt);
print $snmp->get($oid), "\n";
Ожидалось, что она вернет то же, что и snmpwalk, но не тут-то было:
% snmpwalk -v 1 -c public localhost hrSystemDate.0
HOST-RESOURCES-MIB::hrSystemDate.0 = STRING: 2006-3-4,2:25:55.0,+2:0
% ./snmp_get -o hrSystemDate.0 | od -h
0000000 d607 0403 2601 0010 022b 0a00
0000014
Хотя для другого объекта - запросто:
% snmpwalk -v 1 -c public localhost dskDevice.1
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/sda3
% ./snmp_get -o dskDevice.1
/dev/sda3
Как это можно объяснить?