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]