473,378 Members | 1,531 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,378 software developers and data experts.

Net::Telnet hangs after initiating reboot command

Hi,

I am facing a problem with the Perl Telnet Object. My Telnet Object hangs just after issueing reboot command on the remote host.

Please help me who faced this problem !!!

Thanks in advance

Siju Maliakkal
Feb 16 '07 #1
3 3990
miller
1,089 Expert 1GB
Well, of course it will hang, as the telnet session will be dropped immediately after you tell the remote server to reboot. I don't know the best method to solve this, but one alternative would be to setup an alarm.

http://perldoc.perl.org/functions/alarm.html

I would also enclose that particular telnet command in an eval statement to trap the alarm call as well. Then do the appropriate cleanup associated with the fact that the telnet session is defunct. Something like this:

Expand|Select|Wrap|Line Numbers
  1. eval {
  2. alarm 5;
  3. $t->cmd("reboot");
  4. alarm 0;
  5. };
  6. # Proceed with cleanup
  7.  
Feb 16 '07 #2
Expand|Select|Wrap|Line Numbers
  1. ## I have tested this code on all Unix platforms (AIX, HP, Linux - All, Solaris)
  2. ## This is absolutely flawless
  3. ## Abhishek A. Kulkarni
  4.  
  5. use Net::Telnet;
  6. use Net::Ping;
  7.  
  8. sub Reboot
  9. {
  10.         my ($hostname, $username, $password) = @_;
  11.  
  12.         print "\n Telnet for Reboot\n";
  13.         my $telnetHandle = getTelnetHandle($hostname, $username, $password);
  14.  
  15.         print "\n Rebooting the machine \n";
  16.  
  17.         @output = remoteCommand("which reboot", $hostname, $username, $password);
  18.  
  19.         $command = $output[0];
  20.         chomp($command);
  21.         print "\n$command\n";
  22.  
  23.         $telnetHandle->cmd("$command");
  24.         $telnetHandle->close;
  25.  
  26.         print "\n telnet handle closed \n";
  27.  
  28.         ## Verify if host is pinging for some time even after reboot command
  29.         for($count=1;$count<=300;$count++)
  30.         {
  31.                 if($ping->ping($hostname))
  32.                 {
  33.                         print "\n host is still pinging \n";
  34.                         sleep(1);
  35.                 }
  36.                 else
  37.                 {
  38.                         print "\n Host went DOWN \n";
  39.                         last;
  40.                 }
  41.         }
  42.         ## Verify if host has come up after reboot
  43.         $Reboot = 0;
  44.         for($count=1;$count<=180;$count++)
  45.         {
  46.                 if($ping->ping($hostname))
  47.                 {
  48.                         print "\n Host came UP\n";
  49.                         $Reboot = 1;
  50.                         last;
  51.                 }
  52.                 else
  53.                 {
  54.                         print "#";
  55.                         sleep(5);
  56.                 }
  57.         }
  58.  
  59.         if($Reboot == 0)
  60.         {
  61.                 print "\n Host did not come UP even after waiting for 15 mins \n";
  62.         }
  63.         ## Get telnet handle after reboot and return it to the calling subroutine
  64.         $telnetHandle = getTelnetHandle($hostname,$username,$password);
  65.         return $telnetHandle;
  66. }
  67.  
  68. sub remoteCommand
  69. {
  70.         my ($command, $hostname, $username, $password) = @_;
  71.         my $telnetHandle = getTelnetHandle($hostname, $username, $password);
  72.  
  73.         @output = $telnetHandle->cmd(String => $command,Timeout => 4000,Prompt => ' /[#] $/');
  74.  
  75.         return @output;
  76. }
  77.  
  78. sub getTelnetHandle
  79. {
  80.         my ($hostname, $username, $password) = @_;
  81.         my $prompt = '/#|$ $/';
  82.         my $timeout = 10;
  83.         my $errmode = "return";
  84.         my $port = 23;
  85.  
  86.         $ping = Net::Ping->new();
  87.  
  88.         if ($ping->ping($hostname))
  89.         {
  90.                 print "INFO: Host is reachable\n";
  91.  
  92.                 $telnetHandle = new Net::Telnet (Errmode=>$errmode,Host=>$hostname,Prompt=>$prompt,Port=>$port,Timeout=>$timeout);
  93.  
  94.                 $telnetHandle->open("$hostname");
  95.  
  96.                 print "\n Telnet Handle Created \n";
  97.  
  98.                 $telnetHandle->login(Name=>$username,Password=>$password,Errmode => $errmode,Timeout =>$timeout);
  99.  
  100.                 $STDError = $telnetHandle->errmsg();
  101.  
  102.                 if ($STDError)
  103.                 {
  104.                         print "ERROR : $STDError";
  105.                 }
  106.         }
  107.         else
  108.         {
  109.                 print "ERROR: Host is not reachable";
  110.         }
  111.         return $telnetHandle;
  112. }
May 26 '09 #3
numberwhun
3,509 Expert Mod 2GB
You need to please keep in mind the age of the question(s) that you are reading. This post is about 2 years old and I doubt the user is even monitoring it.

To that end, I am closing this thread.

Regards,

Jeff
May 27 '09 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Pete Johansen | last post by:
Hi Folks, This prompt statement has been a real pain in the the butt. I am using net::telnet(v3.03) to connect to a W2K box from a Solaris 2.6 box. I the output stream resulting from a 'dir'...
2
by: Vinay Gupta | last post by:
Hi, In a Perl to Tcl conversion project, I am planning to use the following Tcl extensions as a replacement for some Perl libraries. My development environment is Windows. Win32::OLE --> "DDE"...
1
by: kriz4321 | last post by:
Hi all, This is the code I use to login to any device.( I will not be able to see any window but it will be able to login to the device and give the command specified)... can you tell me what...
1
by: jyohere | last post by:
I want to login to a remote machine using Net::Telnet....then i want to move to a particular directory in that remote machine....after that i want to get a list of files under that directory....after...
0
by: shineyang | last post by:
Dear all: Who is kind to help me about the following problem. Why cannot log the remote node by using Net::Telent #################################### The following is normal to the process...
3
by: surajsingh | last post by:
Hi, I have a perl script which uses Net::Telnet module to open a telnet session with my unix boxes, and executes lot of commands on those boxes. As this module is implemented, when 'cmd' is...
2
by: kriz4321 | last post by:
Hello all i am using net:telnet module to login to the remote machine and execute some commands and to collect some logs corresponding to the command given. After loging into the machine I do...
2
by: jane007 | last post by:
Hi everybody, Anybody who know how to use Net::Telnet module to execute my own script?Not only to execute system command. Please advise. Thanks.
21
by: poolboi | last post by:
hi guys, a question on net::telnet what does this module do? cos i have a telnet client that will be able to communicate with a database so is it true if i enter my ip address, username, and...
0
by: SteveBark | last post by:
Any pointers on this truly appreciated. I am using net::telnet to connect to a modem pool and then connect with a remote piece of kit. Everything works fine normally, however on occassions the...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.