使用Net :: Telnet将ssh导入linux

时间:2014-05-17 09:17:50

标签: linux perl ssh

我正在尝试使用下面的perl代码来ssh到linux机器并拉出ls -l的输出但它似乎没有工作。 我做错了什么?

#!/usr/bin/perl

use warnings;
use strict;

use Net::Telnet;
use IO::Pty;
use POSIX 'setsid';
use Getopt::Long;

use constant PROMPT => '/[a-z#>]/';

my $host = "192.168.1.121";
my $user = "root";

my $ssh = do_cmd( 'ssh', "-l$user", $host );

my $shell = Net::Telnet->new( Fhopen => $ssh );

$shell->binmode(1);
$shell->cmd( String => 'test', Prompt => '/[a-z]/' );
$shell->waitfor(PROMPT);

my @lines = $shell->cmd( String => 'ls -l', Prompt => '/[a-z]/' );

print @lines;
print "\n";

sub do_cmd {
    my ( $cmd, @args ) = @_;

    my $pty = IO::Pty->new;
    defined( my $child = fork );
    return $pty if $child;
    setsid();

    my $tty = $pty->slave;
    close $pty;
    STDIN->fdopen( $tty, "<" );
    STDOUT->fdopen( $tty, ">" );
    STDERR->fdopen( $tty, ">" );
    close $tty;

    $| = 1;
    exec $cmd, @args;
}

1 个答案:

答案 0 :(得分:1)

Telnet和SSH是两个不同的程序。您不能将telnet客户端用于ssh服务器。