5 use Data::Dump qw(dump);
10 my $t = Net::Telnet->new( Timeout => 20, Port => 1123, Prompt => '/#/' );
12 $t->dump_log('/tmp/log') if $ENV{DEBUG};
17 $t->waitfor('/Login:/');
19 $t->waitfor('/Password:/');
29 my ( $self, $out ) = @_;
34 foreach my $line ( split(/[\n\r]+/, $out) ) {
36 if ( $line =~ m/^(\S+)\s*:\s*(\S*.*?)\s*$/ ) {
39 if ( $v =~ s/\s+([a-zA-Z]\S+)\s*:\s*(\S*.*?)\s*$// ) {
41 my ($n2,$v2) = ($1,$2);
43 $hash->{ $section . $n2 } = $v2;
44 warn "## $n2 = $v2\n";
45 } elsif ( $v =~ s/(\d+)([a-zA-Z]\S+)\s*:\s*(\S*.*?)\s*$/$1/ ) { # numberField without space
47 my ($n2,$v2) = ($1,$2);
49 $hash->{ $section . $n2 } = $v2;
50 warn "## $n2 = $v2\n";
52 $hash->{ $section . $n } = $v;
54 } elsif ( $line =~ m/^-+$/ ) {
55 $section = $last_line . '_';
60 warn "## hash = ",dump $hash;
67 'show adsl port %s' => [],
68 'show adsl port %s line-config' => [],
69 'show adsl port %s physical-table' => [],
70 'show adsl port %s perf-data' => [],
74 my ( $self, $row ) = @_;
75 # cleanup column names
76 foreach my $n ( grep { m/[:\s]/ } keys %$row ) {
77 my $v = delete $row->{$n};
79 $n =~ s/:$// && $v =~ s/\skbps$//; # special case