|
@@ -9,7 +9,9 @@ use Data::Dumper;
|
|
|
sub cdata_extract_onu_info {
|
|
sub cdata_extract_onu_info {
|
|
|
my @lines = @_;
|
|
my @lines = @_;
|
|
|
|
|
|
|
|
- my @onu_info = @lines[6..@lines-5];
|
|
|
|
|
|
|
+# say Dumper @lines;
|
|
|
|
|
+
|
|
|
|
|
+ my @onu_info = @lines[4..@lines-5];
|
|
|
|
|
|
|
|
return map([ split(' ', $_) ], @onu_info );
|
|
return map([ split(' ', $_) ], @onu_info );
|
|
|
};
|
|
};
|
|
@@ -77,6 +79,33 @@ async cdata_get_onu_info => sub
|
|
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+async cdata_fun_purge_tree => sub
|
|
|
|
|
+{
|
|
|
|
|
+ my $t = shift;
|
|
|
|
|
+ my $tree = shift;
|
|
|
|
|
+ my $onu_info = shift;
|
|
|
|
|
+ my %onu_info = %{$onu_info};
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ #say Dumper \%onu_info;
|
|
|
|
|
+
|
|
|
|
|
+ await $t->cmd("interface epon 0/0");
|
|
|
|
|
+
|
|
|
|
|
+ foreach my $i ( @{$onu_info{'inactive'}} ) {
|
|
|
|
|
+ #say Dumper @$i[0];
|
|
|
|
|
+ my $onu_num = @$i[0];
|
|
|
|
|
+# say Dumper $onu_num;
|
|
|
|
|
+ my @tmp = await $t->cmd("ont delete $tree $onu_num");
|
|
|
|
|
+ #say Dumper @tmp;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ await $t->cmd("exit");
|
|
|
|
|
+
|
|
|
|
|
+ my @deleted_onu = map { sprintf("%2d %s", $_->[0], $_->[1]) } @{$onu_info{inactive}};
|
|
|
|
|
+
|
|
|
|
|
+ return @deleted_onu;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
async cdata_inspect => sub
|
|
async cdata_inspect => sub
|
|
|
{
|
|
{
|
|
|
my $ip = shift;
|
|
my $ip = shift;
|
|
@@ -151,20 +180,7 @@ async cdata_purge => sub
|
|
|
return "Нечего чистить.";
|
|
return "Нечего чистить.";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- #say Dumper \%onu_info;
|
|
|
|
|
-
|
|
|
|
|
- await $t->cmd("interface epon 0/0");
|
|
|
|
|
-
|
|
|
|
|
- foreach my $i ( @{$onu_info{'inactive'}} ) {
|
|
|
|
|
- #say Dumper @$i[0];
|
|
|
|
|
- my $onu_num = @$i[0];
|
|
|
|
|
- my @tmp = await $t->cmd("ont delete $tree $onu_num");
|
|
|
|
|
- #say Dumper @tmp;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- await $t->cmd("exit");
|
|
|
|
|
-
|
|
|
|
|
- my @deleted_onu = map { sprintf("%2d %s", $_->[0], $_->[1]) } @{$onu_info{inactive}};
|
|
|
|
|
|
|
+ my @deleted_onu = await cdata_fun_purge_tree($t, $tree, \%onu_info);
|
|
|
|
|
|
|
|
%onu_info = await cdata_get_onu_info($t, $tree);
|
|
%onu_info = await cdata_get_onu_info($t, $tree);
|
|
|
|
|
|
|
@@ -186,4 +202,54 @@ async cdata_purge => sub
|
|
|
return $res;
|
|
return $res;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+async cdata_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 cdata_login($t, $login, $password);
|
|
|
|
|
+
|
|
|
|
|
+ for (my $tree=1; $tree <= $tree_count; $tree++) {
|
|
|
|
|
+ my $res = "Дерево $tree\n";
|
|
|
|
|
+
|
|
|
|
|
+ my %onu_info = await cdata_get_onu_info($t, $tree);
|
|
|
|
|
+
|
|
|
|
|
+# say Dumper %onu_info;
|
|
|
|
|
+
|
|
|
|
|
+ if ($onu_info{'inactive_cnt'} == 0) {
|
|
|
|
|
+ $res = $res . "Не имеет неактивных ONU\n";
|
|
|
|
|
+ push @res, $res;
|
|
|
|
|
+ next;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ my @deleted_onu = await cdata_fun_purge_tree($t, $tree, \%onu_info);
|
|
|
|
|
+
|
|
|
|
|
+# say Dumper @deleted_onu;
|
|
|
|
|
+
|
|
|
|
|
+ %onu_info = await cdata_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("save");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $t->close;
|
|
|
|
|
+
|
|
|
|
|
+ return \@res;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
1;
|
|
1;
|