gpt4 book ai didi

linux - 使用 Net::Telnet ssh 进入 linux

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:03 25 4
gpt4 key购买 nike

我正在尝试使用下面的 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;
}

最佳答案

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

关于linux - 使用 Net::Telnet ssh 进入 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com