|
|
@@ -98,6 +98,33 @@ async bdcom_get_onu_info => sub
|
|
|
return %res;
|
|
|
};
|
|
|
|
|
|
+async bdcom_fun_purge_tree => sub
|
|
|
+{
|
|
|
+ my $t = shift;
|
|
|
+ my $tree = shift;
|
|
|
+ my $onu_info = shift;
|
|
|
+ my %onu_info = %{$onu_info};
|
|
|
+
|
|
|
+ await $t->cmd("config");
|
|
|
+ await $t->cmd("interface EPON0/$tree");
|
|
|
+
|
|
|
+# say Dumper %onu_info;
|
|
|
+
|
|
|
+ foreach my $i ( @{$onu_info{'inactive'}} ) {
|
|
|
+# say Dumper @$i[1];
|
|
|
+ my $onu_mac = @$i[1];
|
|
|
+# say Dumper $onu_mac;
|
|
|
+ my @tmp = await $t->cmd("no epon bind-onu mac $onu_mac");
|
|
|
+# say ADumper @tmp;
|
|
|
+ }
|
|
|
+
|
|
|
+ my @deleted_onu = map { sprintf("%2d %s", $_->[0], $_->[1]) } @{$onu_info{inactive}};
|
|
|
+
|
|
|
+ await $t->cmd("exit");
|
|
|
+
|
|
|
+ return @deleted_onu;
|
|
|
+};
|
|
|
+
|
|
|
async bdcom_inspect => sub
|
|
|
{
|
|
|
my $ip = shift;
|
|
|
@@ -181,19 +208,7 @@ async bdcom_purge => sub
|
|
|
return "Нечего чистить";
|
|
|
}
|
|
|
|
|
|
- await $t->cmd("config");
|
|
|
- await $t->cmd("interface EPON0/$tree");
|
|
|
-
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
- my @deleted_onu = map { sprintf("%2d %s", $_->[0], $_->[1]) } @{$onu_info{inactive}};
|
|
|
-
|
|
|
- await $t->cmd("exit");
|
|
|
+ my @deleted_onu = await bdcom_fun_purge_tree($t, $tree, \%onu_info);
|
|
|
|
|
|
%onu_info = await bdcom_get_onu_info($t, $tree);
|
|
|
|
|
|
@@ -215,5 +230,82 @@ async bdcom_purge => sub
|
|
|
return $res;
|
|
|
};
|
|
|
|
|
|
+async bdcom_purgeall => sub
|
|
|
+{
|
|
|
+ my $ip = shift;
|
|
|
+ my $login = shift;
|
|
|
+ my $password = shift;
|
|
|
+ my $tree_count = shift;
|
|
|
+ my $save = shift;
|
|
|
+
|
|
|
+ ############################
|
|
|
+ my @res;
|
|
|
+
|
|
|
+ my $t = new telnet($ip);
|
|
|
+# $t->debug(1);
|
|
|
+
|
|
|
+ await bdcom_login($t, $login, $password);
|
|
|
+
|
|
|
+ #######################
|
|
|
+
|
|
|
+ for (my $tree=1; $tree <= $tree_count; $tree++) {
|
|
|
+ my $res = "Дерево $tree\n";
|
|
|
+
|
|
|
+ my %onu_info = await bdcom_get_onu_info($t, $tree);
|
|
|
+
|
|
|
+ if ($onu_info{'inactive_cnt'} == 0) {
|
|
|
+ $res = $res . "Не имеет неактивных ONU\n";
|
|
|
+ push @res, $res;
|
|
|
+ next;
|
|
|
+ }
|
|
|
+
|
|
|
+ my @deleted_onu = await bdcom_fun_purge_tree($t, $tree, \%onu_info);
|
|
|
+
|
|
|
+# say Dumper @deleted_onu;
|
|
|
+
|
|
|
+ %onu_info = await bdcom_get_onu_info($t, $tree);
|
|
|
+
|
|
|
+ $res = $res . "Осталось ONU: $onu_info{'total_cnt'}\n";
|
|
|
+ $res = $res . "Удалённые ONU:\n" . join("\n", @deleted_onu) if @deleted_onu > 0;
|
|
|
+
|
|
|
+ push @res, $res;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($save) {
|
|
|
+ await $t->cmd("write all");
|
|
|
+ }
|
|
|
+
|
|
|
+ $t->close;
|
|
|
+
|
|
|
+ return \@res;
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+async bdcom_save => sub
|
|
|
+{
|
|
|
+ my $ip = shift;
|
|
|
+ my $login = shift;
|
|
|
+ my $password = shift;
|
|
|
+
|
|
|
+ ############################
|
|
|
+
|
|
|
+ my $t = new telnet($ip);
|
|
|
+# $t->debug(1);
|
|
|
+
|
|
|
+ await bdcom_login($t, $login, $password);
|
|
|
+
|
|
|
+ #######################
|
|
|
+
|
|
|
+ await $t->cmd("write all");
|
|
|
+
|
|
|
+ $t->close;
|
|
|
+
|
|
|
+ my $res = "Сохранено\n";
|
|
|
+
|
|
|
+ return $res;
|
|
|
+};
|
|
|
+
|
|
|
|
|
|
1;
|