Код:
# ----------------------------------------------------------------
# 09) cable_test
# ----------------------------------------------------------------
sub cable_test {
my ($self, @ports) = @_;
my @pairstate=("OK","Open","Short","open/-short","Crosstalk","Unknow","count","NC","Other");
my $oid_link_state="1.3.6.1.4.1.171.12.58.1.1.1.3.";
my $oid_p1_state="1.3.6.1.4.1.171.12.58.1.1.1.5.";
my $oid_p1_length="1.3.6.1.4.1.171.12.58.1.1.1.9.";
my $oid_p2_state="1.3.6.1.4.1.171.12.58.1.1.1.6.";
my $oid_p2_length="1.3.6.1.4.1.171.12.58.1.1.1.10.";
my $oid_cable_test="1.3.6.1.4.1.171.12.58.1.1.1.12.";
my $hash;
my @link_state;
my @p1_state;
my @p1_length;
my @p2_state;
my @p2_length;
my $rz=0;
if ($self->is_ready()) {
$rz=1;
if (!(@ports) or (@ports == NULL)) {
@ports=(1..$self->{test_ports});
}
foreach $prt (@ports) {
if ($prt <= $self->{test_ports}) {
# start cable-test for port $prt
$self->{snmp}->set_request(-varbindlist=>[$oid_cable_test.$prt,INTEGER,1]);
usleep(100000);
# get link state
$hash=$self->{snmp}->get_request($oid_link_state.$prt);
$link_state[$prt]=$hash->{$oid_link_state.$prt};
# get pair 1 state
$hash=$self->{snmp}->get_request($oid_p1_state.$prt);
$p1_state[$prt]=$pairstate[$hash->{$oid_p1_state.$prt}];
# get pair 1 length
if ($p1_state[$prt] ne "NC") {
$hash=$self->{snmp}->get_request($oid_p1_length.$prt);
$p1_length[$prt]=$hash->{$oid_p1_length.$prt};
if ($p1_length[$prt] eq 0) {$p1_length[$prt]="---"}
} else {
$p1_length[$prt]="---";
}
# get pair 2 state
$hash=$self->{snmp}->get_request($oid_p2_state.$prt);
$p2_state[$prt]=$pairstate[$hash->{$oid_p2_state.$prt}];
# get pair 2 length
if ($p2_state[$prt] ne "NC") {
$hash=$self->{snmp}->get_request($oid_p2_length.$prt);
$p2_length[$prt]=$hash->{$oid_p2_length.$prt};
if ($p2_length[$prt] eq 0) {$p2_length[$prt]="---"}
} else {
$p2_length[$prt]="---";
}
}
}
$self->link_state(@link_state);
$self->p1_state(@p1_state);
$self->p1_length(@p1_length);
$self->p2_state(@p2_state);
$self->p2_length(@p2_length);
}
return $rz;
}