X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fnms.pm;h=b55314d16b64e83769b2b01faadabbda7ab6c802;hb=HEAD;hp=f895ffda4cbf06f6583b5e9c907429c5c893b763;hpb=9180f8278b332f8eb6c65a11d6f284f5facf6722;p=nms diff --git a/include/nms.pm b/include/nms.pm index f895ffd..b55314d 100644 --- a/include/nms.pm +++ b/include/nms.pm @@ -5,6 +5,10 @@ use DBI; use Net::Telnet; package nms; + +use base 'Exporter'; +our @EXPORT = qw(switch_connect switch_exec); + BEGIN { require "config.pm"; eval { @@ -25,10 +29,11 @@ sub db_connect { sub switch_connect($) { my ($ip) = @_; -# Dump_Log => '/tmp/dumplog-queue', my $conn = new Net::Telnet( Timeout => $nms::config::telnet_timeout, +# Dump_Log => '/tmp/dumplog-queue', Errmode => 'return', - Prompt => '/(es3024|e\d+\-\dsw)>/i'); +# Prompt => '/ES-3023>/'); + Prompt => '/(ES-3024|e\d{1,2}\-\dsw)>/i'); my $ret = $conn->open( Host => $ip); if (!$ret || $ret != 1) { return (undef); @@ -44,4 +49,26 @@ sub switch_connect($) { return ($conn); } +# Send a command to switch and return the data recvied from the switch +sub switch_exec { + my ($cmd, $conn, $print) = @_; + + # Send the command and get data from switch + my @data; + if (defined($print)) { + $conn->print($cmd); + return; + } else { + @data = $conn->cmd($cmd); + } + my @lines = (); + foreach my $line (@data) { + # Remove escape-7 sequence + $line =~ s/\x1b\x37//g; + push (@lines, $line); + } + + return @lines; +} + 1;