Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Telnet via Perl fails

by JoeJaz (Monk)
on May 23, 2004 at 02:11 UTC ( [id://355674]=note: print w/replies, xml ) Need Help??


in reply to Telnet via Perl fails

I agree with the others regarding using the Net::telnet module if you can afford to. I know that the implementation may be a bit more complicated, but you have less of a chance of having unexpected things happen in your script. For your case you would need to do something like this
use Net::Telnet; # initialize the telnet module my $username = 'user'; my $password = 'some_password'; my $command = 'ls -la'; print "enter the full domain name or IP of the machine that you want t +o telnet to\n"; chomp(my $host=<STDIN>); my prompt_regex = '/ .* ( \-?\@? \w*?\s? [\$#\%>~] \]? | \\\[\\e\[0m\\\] \[0m ) \s? /x'; $shell = new Net::Telnet ('Timeout'=>'7', 'Errmode'=> sub { report_error("login failure"); }, 'Prompt' => $prompt_regex ); $shell->open(Host=>$host); # opens the object $shell->login($username,$password); # login # then we issue some command with $shell->cmd("$command"); # or get the output of some command my $cmd_output = $shell->cmd("$command"); # and close the telnet object sleep 1; $shell->close; sub report_error { .... some code here to handle errors.... }
To give due credit, the above code is from a project that a friend and I work on for fun known as the Temerity Project. Though we both contributed to this script, he refined its implementation and added that awesome regular expression to check for a user's prompt type.
We originally tried using the expect.pm for interacting with telnet. This works too but is a lot more messy.
I hope that this is at least a bit of a help. The Net::Telnet module is a very nice module should you decide to use it. Take care, Joe

Replies are listed 'Best First'.
Re: Re: Telnet via Perl fails
by eric256 (Parson) on May 23, 2004 at 05:55 UTC

    "I agree with the others regarding using the Net::telnet module if you can afford to."

    Afford? I don't understand what it 'costs' that someone whould not be able to afford it. Perhaps i'm just not grasping it in the since you mean, i just don't want the OP scared off by thinking it costs money to use.


    ___________
    Eric Hodges
Re: Re: Telnet via Perl fails
by shamala (Acolyte) on May 24, 2004 at 10:55 UTC
    hey thanks Joe...really appreciate the help.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://355674]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-04-19 02:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found