in reply to Net::Telnet - open session if not already opened
First, I should point out that it looks like you might not be using use strict; in your code. If that is the case, I'd recommend adding that as well as use warnings; to your code.
Here's how I'd approach the modification:
- Declare the $t variable as a hash outside of the foreach loop
- For each key in your main hash, you'll be creating that key in the %t hash
- Inside the foreach loop, do the following:
- Check to see if the key (connection object) exists. If not, create it with unique logs.
- Issue a command to the connection object. If there's an error, close the connection and reopen it.
- Issue the commands that you need to do
Below is my untested modification of your code to do the above suggestions. You'll need to modify the test command to be something that makes sense for your situation.
my $continue = 1; my %t; # Hash to hold telnet connection objects # start of data collection loop that starts every X minutes while ($continue) { #New ForEach Loop to iterate through Router Hash Table foreach $router (sort (keys (%MSC_Routers))) { my $ip = $MSC_Routers{$router}; print ("$router has IP: of $ip\n\n"); #Print out which one I am connecting to print ("\t\t I am telnetting to: $ip \n\n"); sleep 3; $mode = "return"; if (!exists $t{$router}) { my $input_log = $router."_input_log"; my $dump_log = $router."_dump_log"; #Open Telnet Session $t{$router} = new Net::Telnet (Timeout => 10, input_log => "$input_log", dump_log => "$dump_log", prompt => '/#$/', Errmode => $mode ); } my $test_cmd = "ls"; if (!$t{$router}->put($test_cmd)) { # test if connection is op +en $t{$router}->close; $t{$router}->open("$ip"); } # Issue desired commands here } # end foreach $router loop } # end of while loop
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Net::Telnet - open session if not already opened
by isaac737 (Initiate) on Sep 09, 2011 at 23:45 UTC | |
Re^2: Net::Telnet - open session if not already opened
by Anonymous Monk on Jan 18, 2013 at 00:56 UTC |
In Section
Seekers of Perl Wisdom