473,766 Members | 2,172 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Net::Telnet hangs after initiating reboot command

1 New Member
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 4015
miller
1,089 Recognized Expert Top Contributor
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
turbokat
1 New Member
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 Recognized Expert Moderator Specialist
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
4121
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' command I am getting control characters and a line-feed. Here is an example from the input_log: .. .. ..
2
6106
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" or "OpTcl" LWP::UserAgent, HTTP::Request --> "Scotty" Net::Telnet --> "Expect" ('spawn telnet') I have used Expect but haven't used Scotty, DDE or OpTcl before.
1
1633
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 changes I should do so that I can see what happens ...(like telnetting to the device ) Hope you can get my question $telnet3 = new Net::Telnet( Timeout => 10, Errmode => 'die', ); $telnet3->open('192.168.134.36'); # Substituted...
1
1697
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 that i want to ftp those using Net::Ftp to my machine itself....i am a java programmer....but i wanted to write a script for the above said.....i dont know perl also.,....pls help....plssssss
0
1506
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 using "Telnet" #################################### $ telnet 172.30.9.2 Trying 172.30.9.2...
3
2050
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 used, this module waits for the 'prompt' to decide whether the command is finished or not. Now in case the 'timeout' is reached before the 'prompt' appears, the module directly throws error (even if the command might actually be running on the remote...
2
4855
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 patternmatch for a string and collect the logs and store it in a file. The code for the same is given below. $telnet->print('cmd1');#command to be executed sleep(5); ($prematch,$match) = $telnet->waitfor( String => "2>",
2
5742
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
2800
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 password and using print later again to execute some commands i will get some results on some screen??
0
3513
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 remote piece of kit may be busy and will not talk to me, leaving me to logoff cleanly and try again later. Using net::telnet and the following code I am trying to wait for the prompt of ? to be returned if it is not returned after 60 seconds I wisk...
0
9404
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10009
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9838
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7381
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 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 a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6651
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5423
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3929
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3532
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2806
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.