В том-то и дело, что мне нужно работать с perl под windows. Получилось с помощью библиотеки SNMP:
Код:
#!/usr/bin/perl
use SNMP::Util;
&SNMP::addMibFiles("/ftp/Ware/D-Link/DES-3028/Apps/des3028_3052_series_MIB_200/Private MIB/DLINK-ID-REC-MIB.mib");
&SNMP::addMibFiles("/ftp/Ware/D-Link/DES-3028/Apps/des3028_3052_series_MIB_200/Private MIB/ACL.mib");
&SNMP::initMib();
my $ports="2.10.20.24.3";
@ports=split(/\./,$ports);
@rr=();
foreach my $port (@ports) {
$z='1';
for (my $i=0; $i<$port-1; $i++) {
$z="0".$z;
}
for (my $i=0; $i<24-$port; $i++) {
$z=$z."0";
}
$rr[$port]=$z;
}
$res="000000000000000000000000";
foreach my $t (@rr) {
$res = $res | $t;
}
$hex_res="";
for (my $i=0; $i<length($res); $i++) {
$z = unpack("H*", pack ("B*", substr $res, 0, 8, ''));
$hex_res.=$z;
}
my $snmp = new SNMP::Util( -device => $ip, -community => $comm);
@oids0=(
('ACLMGMT-MIB::swACLEtherRuleRowStatus','10.4', 'destroy')
);
@result = $snmp->set( @oids0 );
@oids=(
('ACLMGMT-MIB::swACLEtherRuleSrcMacAddress','10.4', '000000'),
('ACLMGMT-MIB::swACLEtherRulePermit','10.4', '1'),
('ACLMGMT-MIB::swACLEtherRulePort','10.4', pack("H*", $hex_res)),
('ACLMGMT-MIB::swACLEtherRuleRowStatus','10.4', 'createAndGo')
);
@result = $snmp->set( @oids );