=================================================================== RCS file: /cvs/trango/Net-Telnet-Trango/lib/Net/Telnet/Trango.pm,v retrieving revision 1.7 retrieving revision 1.9 diff -u -r1.7 -r1.9 --- trango/Net-Telnet-Trango/lib/Net/Telnet/Trango.pm 2006/06/28 23:33:18 1.7 +++ trango/Net-Telnet-Trango/lib/Net/Telnet/Trango.pm 2006/07/14 02:17:29 1.9 @@ -1,5 +1,5 @@ package Net::Telnet::Trango; -# $RedRiver: Trango.pm,v 1.6 2006/06/28 22:00:15 andrew Exp $ +# $RedRiver: Trango.pm,v 1.8 2006/06/29 00:39:52 andrew Exp $ use strict; use warnings; use base 'Net::Telnet'; @@ -49,6 +49,11 @@ Same as new from L but has defaults for the trango 'Prompt' +It also takes an optional parameter 'Decode'. If not defined it +defaults to 1, if it is set to 0, it will not decode the output and +instead return an array of the lines that were returned from the +command. + =cut sub new @@ -67,6 +72,8 @@ foreach my $key (keys %args) { $PRIVATE{$key} = $args{$key}; } + $PRIVATE{'Decode'} = 1 unless defined $PRIVATE{'Decode'}; + delete $args{'Decode'}; my $self = $class->SUPER::new(%args); bless $self if ref $self; @@ -243,6 +250,26 @@ returns an array ref of hashes containing each log line. +=item save_sudb + +returns true on success, undef on failure + +=item syslog + +returns the output from the syslog command + +=item pipe + +returns the output from the pipe command + +=item maclist + +returns the output from the maclist command + +=item eth_list + +returns the output from the eth list command + =cut @@ -255,7 +282,12 @@ sulog => { decode => 'sulog', expect => $success }, 'exit' => { no_prompt => 1, cmd_disconnects => 1 }, reboot => { no_prompt => 1, cmd_disconnects => 1 }, - sudb_save => { String => "sudb save", expect => $success }, + save_sudb => { String => "save sudb", expect => $success }, + syslog => { expect => $success }, + 'pipe' => { }, # XXX needs a special decode + maclist => { }, # XXX needs a special decode and a special expect + eth_link => { String => "eth link", expect => $success }, + # eth r, w and reset??? #su password??? #_bootloader #temp @@ -433,7 +465,6 @@ ); } - =pod =item sudb_view @@ -456,8 +487,13 @@ return undef unless @lines; + unless ($PRIVATE{'Decode'}) { + return @lines; + } + my @sus; foreach (@lines) { + next unless $_; if (/^\[(\d+)\]\s+(\d+)\s+(\d+)\s+(\d+)\s+([0-9A-Fa-f\s]+)$/) { my %s = ( suid => $1, @@ -491,7 +527,7 @@ and returns true on success or undef otherwise. -You should sudb_save() after calling this, or your changes will be lost +You should save_sudb() after calling this, or your changes will be lost when the AP is rebooted. =cut @@ -550,7 +586,7 @@ Takes either 'all' or the suid of the su to delete and returns true on success or undef otherwise. -You should sudb_save() after calling this, or your changes will be lost +You should save_sudb() after calling this, or your changes will be lost when the AP is rebooted. =cut @@ -567,7 +603,6 @@ return $self->cmd( String => 'sudb delete ' . $suid, expect => $success ); } - =pod =item sudb_modify @@ -580,7 +615,7 @@ su2su takes a group id parameter that is in hex. -You should sudb_save() after calling this, or your changes will be lost +You should save_sudb() after calling this, or your changes will be lost when the AP is rebooted. =cut @@ -697,9 +732,9 @@ ); my %cfg; - if (@_ == 2) { + if (@_ == 1) { $cfg{'String'} = shift; - } elsif (@_ > 2) { + } elsif (@_ > 1) { %cfg = @_; } @@ -744,7 +779,7 @@ $self->last_lines(\@lines); my $vals = 1; - if ($cfg{'decode'}) { + if ($PRIVATE{'Decode'} && $cfg{'decode'}) { if ($cfg{'decode'} eq 'each') { $vals = _decode_each_line(@lines); } elsif ($cfg{'decode'} eq 'sulog') { @@ -766,7 +801,7 @@ $self->is_connected(0); } - if ($cfg{'decode'}) { + if ($PRIVATE{'Decode'} && $cfg{'decode'}) { return $vals; } else { return @lines;