На 3200 обновляю прошивку такой функцией:
Код:
sub dlink {
my $host = $_[0];
my $sFileAddr = '1.3.6.1.4.1.171.12.1.2.1.1.3.1';
my $sTransferType = '1.3.6.1.4.1.171.12.1.2.1.1.4.1';
my $sFile = '1.3.6.1.4.1.171.12.1.2.1.1.5.1';
my $sFileID = '1.3.6.1.4.1.171.12.1.2.1.1.6.1';
my $sFileLoadType = '1.3.6.1.4.1.171.12.1.2.1.1.7.0';
my $sFileCtrl = '1.3.6.1.4.1.171.12.1.2.1.1.8.1';
my $sSaveCfg = '1.3.4.1.4.1.171.12.1.2.6.0';
if ($ping->ping($host)){
print $host."\n";
($session, $error) = Net::SNMP->session (-hostname => $host,
-community => $w_comm,
-port => 161,
-version => 2 ,
-timeout => 1,
-debug => 0);
if ($error){print "$error\n"; return 1}
#$set=$session->set_request (-varbindlist => [$sSaveCfg, INTEGER, 3]);#сохранить конфиг
#sleep 10;
$set=$session->set_request (-varbindlist => [$sFileAddr, IPADDRESS, $sftp] ); #Адрес сервера
if ($session->error) {
$r=$session->error;
print "$r\nfadd\n";
$set=$session->close;
return 1;
}
$set=$session->set_request (-varbindlist => [$sTransferType, INTEGER, 2]);#тип передачи -- сеть
if ($session->error) {
$r=$session->error;
print "$r\ntrtype\n";
$set=$session->close;
return 1;
}
$set=$session->set_request (-varbindlist => [$sFile, OCTET_STRING, $fName]);#Имя файла на сервере
if ($session->error) {
$r=$session->error;
print "$r\nfname\n";
$set=$session->close;
return 1;
}
$set=$session->set_request (-varbindlist => [$sFileID, INTEGER, 1]); #ID файла прошивки
if ($session->error) {
$r=$session->error;
print "$r\nfid\n";
$set=$session->close;
return 1;
}
$set=$session->set_request (-varbindlist => [$sFileLoadType, INTEGER, 2]);#тип загрузки -- слив
if ($session->error) {
$r=$session->error;
print "$r\nloadtype\n";
$set=$session->close;
return 1;
}
$set=$session->set_request (-varbindlist => [$sFileCtrl, INTEGER, 3]);#команда на слив :)
if ($session->error) {
$r=$session->error;
print "$r\n\fctr\n";
$set=$session->close;
return 1;
}
$set=$session->close;
}
return 0;
}
На 36** это не работает, очевидно в нем другие оиды, а возможно и алгоритм.