I had not tried that because login() requires "login:" or "username:" as
the prompt (as I read the documentation); my prompt is "User ID:".  I
did go ahead and try it just now and it doesn't work either... doesn't
even send out the username since it doesn't see the expected prompt.

I do appreciate the suggestion, though.  Any other possibilities?



On Mon, 2002-08-12 at 11:27, Akens, Anthony wrote:
> Have you tried using 
> 
> $ion->login($username, $passwd); 
> 
> Instead of doing it the hard way?
> 
> Here's a sample script I use with net::telnet that works just fine...
> Might want to try modifying it.  I use a hosts file, because my script
> hits a number of machines.  The only bit that might be confusing is
> the regex for the prompt.  The prompt is in the format 
> 
> [user@host directory]
> 
> on the clients I am connecting to.
> 
> use strict;
> my ( $hostname, $passwd, $username);
> 
>     $username = "username";
>     $passwd = "password";
> 
> open (HOSTS, "hosts.txt")
>     or die "Could not open hosts file.";
>     
> while (<HOSTS>)
> {
>     chomp($hostname = $_);
>     $hostname =~ s/^\s+//;
>     $hostname =~ s/\s+$//;
>     #chomp ($hostname);
>     ## Connect and login.
>     use Net::Telnet ();
>     $host = new Net::Telnet (Timeout => 30,
>                              Prompt => '/\[.*?\]\#/');  
>     $host->open($hostname);
>     $host->login($username, $passwd);
> 
>     $host->waitfor(/\[.*?\]#/);
> 
>       #do stuff here!
> }
>   
> exit;
> 
> 
> -----Original Message-----
> From: Joe Mecklin [mailto:[EMAIL PROTECTED]]
> Sent: Monday, August 12, 2002 11:13 AM
> To: [EMAIL PROTECTED]
> Subject: Net::Telnet question
> 
> 
> Using Net::Telnet, I'm having trouble getting the server I'm connecting
> to to recognize my input to the login prompt.  Below is the code so far
> (all system/user details have been changed to protect the innocent):
> 
> 
> #! /usr/bin/perl
> #   tnp -   TelNet via Perl
> #   trial program to replace Expect script
> 
> use Net::Telnet ();
> $ion = new Net::Telnet
> (
>     -host => "system.name.com",
>     -port => 1234,
>     -output_record_separator => "\r"
> );
> 
> $ion->dump_log("ion_log");
> 
> $ion->binmode(1);
> if ($ion->open())
> {
>     print "Connected...\n";
> }
> 
> if ($ion->waitfor(-string => "User ID:"))
> {
>     print "Saw \"User ID:\" ...\n";
>     $ion->print("username");
> }
> 
> if ($ion->waitfor(-string => "Password:"))
> {
>     print "Saw \"Password:\" ...\n";
> }
> 
> $ion->close();
> 
> $ion->dump_log;
> 
> ##### end of program
> 
> When I run this, after printing
> 
>       Saw "Password:" ...
> 
> the connection times out every time.  Looking at ion_log, the last entry
> is 
>       ... various text and ANSI codes ...
>       username
> 
> indicating that it was successfully passed to the server.   I have tried
> the ->print and ->put calls, with and without various combinations of \r
> and \n, with and without binmode() on.  This same functionality
> currently exists in a working Expect script (with \r appended to each
> input) but I'd like to get it working in Perl as well.
> 
> Any ideas on what may be missing will be greatly appreciated.
> 
> Joe
> 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to