|
|
@@ -115,13 +115,9 @@ async bdcom_inspect => sub
|
|
|
|
|
|
$t->close;
|
|
|
|
|
|
- my $total_count = $onu_info{'total_cnt'};
|
|
|
- my $active_count = $onu_info{'active_cnt'};
|
|
|
- my $inactive_count = $onu_info{'inactive_cnt'};
|
|
|
-
|
|
|
- my $res = "Всего: $total_count
|
|
|
-Количество активных ONU: $active_count
|
|
|
-Количество неактивных ONU: $inactive_count
|
|
|
+ my $res = "Всего: $onu_info{'total_cnt'};
|
|
|
+Количество активных ONU: $onu_info{'active_cnt'};
|
|
|
+Количество неактивных ONU: $onu_info{'inactive_cnt'};
|
|
|
\n";
|
|
|
|
|
|
$res = $res . "Неактивные ONU:\n" . join("\n", map( join(" ", @$_), @{$onu_info{'inactive'}} ) ) . "\n\n";
|
|
|
@@ -147,30 +143,13 @@ async bdcom_onu => sub
|
|
|
|
|
|
#######################
|
|
|
|
|
|
- my @inactive_onu = await $t->cmd("show epon inactive-onu interface ePON 0/$tree");
|
|
|
- $inactive_onu[0] =~ m|Interface EPON0/\d+ has bound (\d+)|;
|
|
|
- my $inactive_count = $1 || "?";
|
|
|
- if (@inactive_onu <= 1) {
|
|
|
- $inactive_count = 0;
|
|
|
- }
|
|
|
-
|
|
|
- $t->prompt(qr/#/);
|
|
|
-
|
|
|
- my @active_onu = await $t->cmd("show epon active-onu interface ePON 0/$tree");
|
|
|
- $active_onu[0] =~ m|Interface EPON0/\d+ has bound (\d+)|;
|
|
|
- my $active_count = $1 || "?";
|
|
|
- if (@active_onu <= 1) {
|
|
|
- $active_count = 0;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- my $total_count = $active_count + $inactive_count;
|
|
|
+ my %onu_info = await bdcom_get_onu_info($t, $tree);
|
|
|
|
|
|
$t->close;
|
|
|
|
|
|
- my $res = "Всего: $total_count
|
|
|
-Количество активных ONU: $active_count
|
|
|
-Количество неактивных ONU: $inactive_count
|
|
|
+ my $res = "Всего: $onu_info{'total_cnt'};
|
|
|
+Количество активных ONU: $onu_info{'active_cnt'};
|
|
|
+Количество неактивных ONU: $onu_info{'inactive_cnt'};
|
|
|
\n";
|
|
|
|
|
|
return $res;
|
|
|
@@ -182,6 +161,7 @@ async bdcom_purge => sub
|
|
|
my $login = shift;
|
|
|
my $password = shift;
|
|
|
my $tree = shift;
|
|
|
+ my $save = shift;
|
|
|
|
|
|
############################
|
|
|
|
|
|
@@ -192,23 +172,9 @@ async bdcom_purge => sub
|
|
|
|
|
|
#######################
|
|
|
|
|
|
- my @inactive_onu = await $t->cmd("show epon inactive-onu interface ePON 0/$tree");
|
|
|
- $inactive_onu[0] =~ m|Interface EPON0/\d+ has bound (\d+)|;
|
|
|
- my $inactive_count = $1 || "?";
|
|
|
- if (@inactive_onu <= 1) {
|
|
|
- $inactive_count = 0;
|
|
|
- }
|
|
|
-
|
|
|
- my @active_onu = await $t->cmd("show epon active-onu interface ePON 0/$tree");
|
|
|
- $active_onu[0] =~ m|Interface EPON0/\d+ has bound (\d+)|;
|
|
|
- my $active_count = $1 || "?";
|
|
|
- if (@active_onu <= 1) {
|
|
|
- $active_count = 0;
|
|
|
- }
|
|
|
-
|
|
|
- my $total_count = $active_count + $inactive_count;
|
|
|
+ my %onu_info = await bdcom_get_onu_info($t, $tree);
|
|
|
|
|
|
- if ($inactive_count == 0) {
|
|
|
+ if ($onu_info{'inactive_cnt'} == 0) {
|
|
|
$t->close;
|
|
|
return "Нечего чистить";
|
|
|
}
|
|
|
@@ -216,44 +182,31 @@ async bdcom_purge => sub
|
|
|
await $t->cmd("config");
|
|
|
await $t->cmd("interface EPON0/$tree");
|
|
|
|
|
|
- my @in_onu_info = bdcom_extract_onu_info(@inactive_onu);
|
|
|
- my @compact_in_onu_info = map( [bdcom_extract_onu_num(@$_[0]), @$_[1]], @in_onu_info );
|
|
|
-
|
|
|
- foreach my $i ( @compact_in_onu_info ) {
|
|
|
- say Dumper @$i[1];
|
|
|
+ foreach my $i ( @{$onu_info{'inactive'}} ) {
|
|
|
+# say Dumper @$i[1];
|
|
|
my $onu_mac = @$i[1];
|
|
|
my @tmp = await $t->cmd("no epon bind-onu mac $onu_mac");
|
|
|
- say Dumper @tmp;
|
|
|
+# say Dumper @tmp;
|
|
|
}
|
|
|
|
|
|
- my @deleted_onu = map( join(" ", @$_), @compact_in_onu_info);
|
|
|
+ my @deleted_onu = map( join(" ", @$_), @{$onu_info{'inactive'}});
|
|
|
|
|
|
await $t->cmd("exit");
|
|
|
|
|
|
- @inactive_onu = await $t->cmd("show epon inactive-onu interface ePON 0/$tree");
|
|
|
- $inactive_onu[0] =~ m|Interface EPON0/\d+ has bound (\d+)|;
|
|
|
- $inactive_count = $1 || "?";
|
|
|
- if (@inactive_onu <= 1) {
|
|
|
- $inactive_count = 0;
|
|
|
- }
|
|
|
+ %onu_info = await bdcom_get_onu_info($t, $tree);
|
|
|
|
|
|
- @active_onu = await $t->cmd("show epon active-onu interface ePON 0/$tree");
|
|
|
- $active_onu[0] =~ m|Interface EPON0/\d+ has bound (\d+)|;
|
|
|
- $active_count = $1 || "?";
|
|
|
- if (@active_onu <= 1) {
|
|
|
- $active_count = 0;
|
|
|
+ if ($save) {
|
|
|
+ await $t->cmd("write all");
|
|
|
}
|
|
|
|
|
|
- $total_count = $active_count + $inactive_count;
|
|
|
-
|
|
|
- await $t->cmd("write all");
|
|
|
-
|
|
|
$t->close;
|
|
|
|
|
|
- my $res = "После чистки осталось ONU: $total_count
|
|
|
-Количество активных ONU: $active_count
|
|
|
-Количество неактивных ONU: $inactive_count
|
|
|
-\n";
|
|
|
+ my $res = "Осталось ONU: $onu_info{'total_cnt'}\n";
|
|
|
+
|
|
|
+ if ( $onu_info{'active_cnt'} != $onu_info{'total_cnt'} ) {
|
|
|
+ $res = $res . "Общее количество ONU и количество активных ONU не совпадает.
|
|
|
+Лучше обратиться к Вашему системноу администратору\n";
|
|
|
+ }
|
|
|
|
|
|
$res = $res . "Удалённые ONU:\n" . join("\n", @deleted_onu) if @deleted_onu > 0;
|
|
|
|