瀏覽代碼

refactor bdcom_inspect

alakiza 2 年之前
父節點
當前提交
edc6034e46
共有 1 個文件被更改,包括 48 次插入24 次删除
  1. 48 24
      modules/bdcom.pm

+ 48 - 24
modules/bdcom.pm

@@ -53,21 +53,11 @@ async bdcom_login => sub {
 
 };
 
-async bdcom_inspect => sub
+async bdcom_get_onu_info => sub
 {
-    my $ip = shift;
-    my $login = shift;
-    my $password = shift;
+    my $t = shift;
     my $tree = shift;
 
-  ############################
-
-    my $t = new telnet($ip);
-#  $t->debug(1);
-    await bdcom_login($t, $login, $password);
-
-  #######################
-
     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 || "?";
@@ -84,26 +74,59 @@ async bdcom_inspect => sub
 
     my $total_count = $active_count + $inactive_count;
 
+    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 );
+    #@compact_in_onu_info = map( join(" ", @$_), @compact_in_onu_info);
+
+#    say Dumper @active_onu;
+    my @a_onu_info = bdcom_extract_onu_info(@active_onu);
+#    say "test2";
+    my @compact_a_onu_info = map( [bdcom_extract_onu_num(@$_[0]), @$_[1]], @a_onu_info );
+    #@compact_a_onu_info = map( join(" ", @$_), @compact_a_onu_info);
+
+
+    my %res = (
+        'total_cnt'    => $total_count,
+        'active_cnt'   => $active_count,
+        'inactive_cnt' => $inactive_count,
+        'active'       => [ @compact_a_onu_info ],
+        'inactive'     => [ @compact_in_onu_info ],
+    );
+
+    return %res;
+};
+
+async bdcom_inspect => sub
+{
+    my $ip = shift;
+    my $login = shift;
+    my $password = shift;
+    my $tree = shift;
+
+  ############################
+
+    my $t = new telnet($ip);
+#  $t->debug(1);
+    await bdcom_login($t, $login, $password);
+
+  #######################
+
+    my %onu_info = await bdcom_get_onu_info($t, $tree);
+
     $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
 \n";
 
-    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 );
-    @compact_in_onu_info = map( join(" ", @$_), @compact_in_onu_info);
+    $res = $res . "Неактивные ONU:\n" . join("\n", map( join(" ", @$_), @{$onu_info{'inactive'}} ) ) . "\n\n";
 
-    say Dumper @active_onu;
-    my @a_onu_info = bdcom_extract_onu_info(@active_onu);
-    say "test2";
-    my @compact_a_onu_info = map( [bdcom_extract_onu_num(@$_[0]), @$_[1]], @a_onu_info );
-    @compact_a_onu_info = map( join(" ", @$_), @compact_a_onu_info);
-
-    $res = $res . "Неактивные ONU:\n" . join("\n", @compact_in_onu_info) . "\n\n";
-
-    $res = $res . "Активные ONU:\n" . join("\n", @compact_a_onu_info);
+    $res = $res . "Активные ONU:\n" . join("\n", map( join(" ", @$_), @{$onu_info{'active'}} ) );
 
     return $res;
 };
@@ -123,6 +146,7 @@ async bdcom_onu => sub
     await bdcom_login($t, $login, $password);
 
     #######################
+
     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 || "?";