Click here to get back home

net::telnet pm issue

 HomeNewsGroups | Search | About
 comp.lang.perl.modules    Post an article   get this group's latest topics as an RSS feed add this group's latest topics to your My MSN content add this group's latest topics to your My Yahoo content
Subject Author Date
net::telnet pm issue solaris.identity 02-09-2007
Posted by solaris.identity on February 9, 2007, 3:33 pm
Please log in for more thread options


Hi,

Not matter what RE I try in 'waitfor' function does not match the
"Password" prompt.


Here is the piece of code, from your example that I used

## Create a Net::Telnet object to perform I/O on ssh's tty.
use Net::Telnet;
$ssh = new Net::Telnet (-fhopen => $pty,
-prompt => $prompt,
-telnetmode => 0,
-cmd_remove_mode => 1,
-output_record_separator => "\r");
$ssh->dump_log('passwd.log');
## Login to remote host.
$ssh->waitfor(-match => '/.*password:.*/i',
-errmode => "return")
or die "problem connecting to host: ", $ssh->lastline


when I do a ssh from command line the prompt ends with

Password:

here are the last few line of dump_log

< 0x00000: 50 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65
Permission denie
< 0x00010: 64 20 28 67 73 73 61 70 69 2d 6b 65 79 65 78 2c d
(gssapi-keyex.
< 0x00020: 67 73 73 61 70 69 2d 77 69 74 68 2d 6d 69 63 2c gssapi-
with-mic.
< 0x00030: 70 75 62 6c 69 63 6b 65 79 2c 6b 65 79 62 6f 61
publickey.keyboa
< 0x00040: 72 64 2d 69 6e 74 65 72 61 63 74 69 76 65 29 2e rd-
interactive).

< 0x00000: 0d 0d 0a ...


Thanks


Posted by Joe Smith on February 9, 2007, 4:26 pm
Please log in for more thread options


solaris.identity@gmail.com wrote:

> Not matter what RE I try in 'waitfor' function does not match the
> "Password" prompt.

You're assuming that it comes over the socket.

> $ssh = new Net::Telnet (-fhopen => $pty,
>
> when I do a ssh from command line the prompt ends with
>
> Password:

With telnet, the "Password:" prompt comes over the socket from the telnetd
server.
With ssh, the "Password:" prompt comes from the ssh client and is read
from /dev/tty, not STDIN.

What made you choose Net::Telnet versus Net::SSH ?

        -Joe

Posted by solaris.identity on February 9, 2007, 8:10 pm
Please log in for more thread options


> solaris.ident...@gmail.com wrote:
> > Not matter what RE I try in 'waitfor' function does not match the
> > "Password" prompt.
>
> You're assuming that it comes over the socket.
>
> > $ssh = new Net::Telnet (-fhopen => $pty,
>
> > when I do a ssh from command line the prompt ends with
>
> > Password:
>
> With telnet, the "Password:" prompt comes over the socket from the telnetd
server.
> With ssh, the "Password:" prompt comes from the ssh client and is read
> from /dev/tty, not STDIN.
>
> What made you choose Net::Telnet versus Net::SSH ?
>
> -Joe


I took this straight out of Net::Telnet web page examples

http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm#AUTHOR


there was no particular reason for using Net::Telnet. I found what I
wanted to do with an example .

here it is
## Main program.
{
my ($pty, $ssh, @lines);
my $host = "changeme";
my $user = "changeme";
my $password = "changeme";
my $prompt = '/changeme:~> $/';

## Start ssh program.
$pty = &spawn("ssh", "-l", $user, $host); # spawn() defined
below

## Create a Net::Telnet object to perform I/O on ssh's tty.
use Net::Telnet;
$ssh = new Net::Telnet (-fhopen => $pty,
-prompt => $prompt,
-telnetmode => 0,
-cmd_remove_mode => 1,
-output_record_separator => "\r");

## Login to remote host.
$ssh->waitfor(-match => '/password: ?$/i',
-errmode => "return")
or die "problem connecting to host: ", $ssh->lastline;
$ssh->print($password);
$ssh->waitfor(-match => $ssh->prompt,
-errmode => "return")
or die "login failed: ", $ssh->lastline;

## Send command, get and print its output.
@lines = $ssh->cmd("who");
print @lines;

exit;
} # end main program

sub spawn {
my(@cmd) = @_;
my($pid, $pty, $tty, $tty_fd);

## Create a new pseudo terminal.
use IO::Pty ();
$pty = new IO::Pty
or die $!;

## Execute the program in another process.
unless ($pid = fork) { # child process
die "problem spawning program: $!\n" unless defined $pid;

## Disassociate process from existing controlling
terminal.
use POSIX ();
POSIX::setsid
or die "setsid failed: $!";

## Associate process with a new controlling terminal.
$tty = $pty->slave;
$tty_fd = $tty->fileno;
close $pty;

## Make stdio use the new controlling terminal.
open STDIN, "<&$tty_fd" or die $!;
open STDOUT, ">&$tty_fd" or die $!;
open STDERR, ">&STDOUT" or die $!;
close $tty;

## Execute requested program.
exec @cmd
or die "problem executing $cmd[0]\n";
} # end child process

$pty;
} # end sub spawn




Similar ThreadsPosted
How do you telnet from 1 host to another using Telnet Module December 21, 2005, 4:15 pm
debugging issue with Net::FTP January 1, 2005, 2:36 pm
Possible Issue with HTML::TreeBuilder? July 5, 2005, 6:49 am
libwww-SSL Post Issue August 2, 2006, 4:04 pm
Illegal Immigration, the Non-Issue of the Week........................ March 30, 2006, 10:52 pm
Sybase Stored Procedure issue June 14, 2006, 12:27 pm
ImageMagick and Xitami jpeg/bmp issue June 28, 2006, 9:40 am
net::telnet to ms telnet server May 19, 2005, 12:28 am
CPAN conflict issue - CGI.pm vs ModPerl::Registry September 25, 2006, 12:42 pm
Net::Daemon t/forkm.t issue on Solaris 10 zone? November 10, 2006, 7:12 pm

Our other projects:

Art Dolls, Fairies and Mermaids - Sunnyfaces.net

Roy's Linux, Programming and Search Engines messages

1-Script XML SitemapXML Sitemap