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
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: -
eval {
-
alarm 5;
-
$t->cmd("reboot");
-
alarm 0;
-
};
-
# Proceed with cleanup
-
- ## I have tested this code on all Unix platforms (AIX, HP, Linux - All, Solaris)
-
## This is absolutely flawless
-
## Abhishek A. Kulkarni
-
-
use Net::Telnet;
-
use Net::Ping;
-
-
sub Reboot
-
{
-
my ($hostname, $username, $password) = @_;
-
-
print "\n Telnet for Reboot\n";
-
my $telnetHandle = getTelnetHandle($hostname, $username, $password);
-
-
print "\n Rebooting the machine \n";
-
-
@output = remoteCommand("which reboot", $hostname, $username, $password);
-
-
$command = $output[0];
-
chomp($command);
-
print "\n$command\n";
-
-
$telnetHandle->cmd("$command");
-
$telnetHandle->close;
-
-
print "\n telnet handle closed \n";
-
-
## Verify if host is pinging for some time even after reboot command
-
for($count=1;$count<=300;$count++)
-
{
-
if($ping->ping($hostname))
-
{
-
print "\n host is still pinging \n";
-
sleep(1);
-
}
-
else
-
{
-
print "\n Host went DOWN \n";
-
last;
-
}
-
}
-
## Verify if host has come up after reboot
-
$Reboot = 0;
-
for($count=1;$count<=180;$count++)
-
{
-
if($ping->ping($hostname))
-
{
-
print "\n Host came UP\n";
-
$Reboot = 1;
-
last;
-
}
-
else
-
{
-
print "#";
-
sleep(5);
-
}
-
}
-
-
if($Reboot == 0)
-
{
-
print "\n Host did not come UP even after waiting for 15 mins \n";
-
}
-
## Get telnet handle after reboot and return it to the calling subroutine
-
$telnetHandle = getTelnetHandle($hostname,$username,$password);
-
return $telnetHandle;
-
}
-
-
sub remoteCommand
-
{
-
my ($command, $hostname, $username, $password) = @_;
-
my $telnetHandle = getTelnetHandle($hostname, $username, $password);
-
-
@output = $telnetHandle->cmd(String => $command,Timeout => 4000,Prompt => ' /[#] $/');
-
-
return @output;
-
}
-
-
sub getTelnetHandle
-
{
-
my ($hostname, $username, $password) = @_;
-
my $prompt = '/#|$ $/';
-
my $timeout = 10;
-
my $errmode = "return";
-
my $port = 23;
-
-
$ping = Net::Ping->new();
-
-
if ($ping->ping($hostname))
-
{
-
print "INFO: Host is reachable\n";
-
-
$telnetHandle = new Net::Telnet (Errmode=>$errmode,Host=>$hostname,Prompt=>$prompt,Port=>$port,Timeout=>$timeout);
-
-
$telnetHandle->open("$hostname");
-
-
print "\n Telnet Handle Created \n";
-
-
$telnetHandle->login(Name=>$username,Password=>$password,Errmode => $errmode,Timeout =>$timeout);
-
-
$STDError = $telnetHandle->errmsg();
-
-
if ($STDError)
-
{
-
print "ERROR : $STDError";
-
}
-
}
-
else
-
{
-
print "ERROR: Host is not reachable";
-
}
-
return $telnetHandle;
-
}
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
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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:
..
..
..
|
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.
|
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...
|
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
|
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...
| |
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...
|
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>",
|
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.
|
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??
|
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...
|
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,...
| |
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...
|
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...
|
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...
|
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();...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
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
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
|
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...
| |