in reply to Trying to capture error message using telnet::net

If you are setting 'Errmode' parameter of 'Net::Telnet' module as 'return', whenever the script encounter a problem, objet will return an error message and same can be get by calling 'errmsg' function. Please check the below mentioned sample for more details
use Net::Telnet; my $telnet = new Net::Telnet ( Timeout=>10, Port=>80, Errmode => 'retu +rn' ); $telnet->open("testerrmode.com"); if($telnet->errmsg ) { print "errmsg: " . $telnet->errmsg . "\n"; } else { print "success\n"; } print "moving to next statement\n";
If you are setting the 'Errmode' parameter of 'Net::Telnet' module as 'die', use 'eval' function for catching the error string. Please check the code given below
use Net::Telnet; eval { my $telnet = new Net::Telnet ( Timeout=>10, Port=>80, Errmode +=> 'die' ); $telnet->open("testerrmode.com"); }; if($@) { print $@; } else { print "success\n"; } print "moving to next statement\n";

Replies are listed 'Best First'.
Re^2: Trying to capture error message using telnet::net
by tprizler (Novice) on Sep 02, 2008 at 11:59 UTC
    Let me explain.
    My script go on a text file that contain IP addresses. I have a subroutine that duty is to connect to a remote machine.


    I use a while loop that each time call the subroutine to connect to a remote machine.

    this function suppose to go on all the file with the IP addresses. but when an error occurs during the connection ( No ping, console port is occupied, etc) the script stops.


    I want the script to generate an error lets say "The server is unreacable" each time it encounter an error, and continue to the outher IP's.

    sub connect { my ($console_server,$console_port) = @_; my $telnet = new Net::Telnet ( Timeout=>10,Port => $console_po +rt ,Errmode=>'return'); $telnet->open("$console_server"); if ($telnet->errmsg){ print "errmsg: " . $telnet->errmsg . "\n"; } else { print"success\n"; } print ("loginig in...\n"); $telnet->print('user'); $telnet->waitfor('/password: $/i'); $telnet->print('password'); $telnet->waitfor('/# ?$/i'); print ("exiting...\n"); $telnet->print('exit'); } } while (<DATA>) { my $line = $_; print "trying to connect to console server $console_server_tem +p port $console_port_temp \n"; &connect($console_server_temp,$console_port_temp); }

    I tried the first option and the script stoped the moment an error occured.

    The secoond option didn't worked, when i tried to run the script i got a lot of error messages about not recognizing the $telnet.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 37.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 39.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 43.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 56.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 57.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 58.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 59.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 63.

    Global symbol "$telnet" requires explicit package name at ./connect_telnet.pl line 7

    Any suggestions?? Thanks!!

      Hi,
      Just ignore "my", "use strict" in your code.
      Regards,
      Anbarasu