gpt4 book ai didi

perl - 无法使用 Net::OpenSSH 进行 SSH,可以通过命令行

转载 作者:行者123 更新时间:2023-12-02 14:19:09 55 4
gpt4 key购买 nike

这是我第一次使用 Net::OpenSSH,我正在尝试创建一个 SSH for 循环,在其中打印我正在使用的服务器的主机名 whoami .我可以从命令行通过 SSH 连接到我想要的服务器,但是当我运行我的脚本时,我遇到了以下错误......

ssh: could not resolve hostname
: Name or service not known
username



为了获得更多信息,我打印了 $ssh->error 的输出。 , 其中 $ssh是我的 Net::OpenSSH 对象。

unable to establish master SSH connection: bad password or master process exited unexpectedly at line 24, $fh line 1



这是目前为止的剧本...
#!/usr/bin/perl

use strict;
use warnings;
use Net::OpenSSH;
my $file = 'servers.txt';
open (my $fh, $file) or die "Could not open";

while (my $row = <$fh>) {
my $user = "username";
my $password = "password";
my $ssh = Net::OpenSSH->new(host => $row, user => $user, password => $password);
$ssh-error and die "SSH connection failed: " . $ssh->error;
my $whoami = `whoami`;
print $whoami;
}

servers.txt 文件是一个纯文本文件,其中包含一个接一个的服务器主机名列表。

我的理解是,如果我可以从命令行通过 SSH 连接到这些服务器,那么问题一定出在脚本上,而不是服务器/网络上。任何关于为什么 I Net::OpenSSH 无法解析看似可访问的服务器的见解将不胜感激。

最佳答案

“问题一定出在脚本上”是的,我执行的脚本有两个问题。第一个是语法错误。其他评论者已经注意到它。

线

   $ssh-error and die "SSH connection failed: " . $ssh->error;

应该
   $ssh->error and die "SSH connection failed: " . $ssh->error;

另一个问题来自您尚未显示的脚本版本,其他人也注意到了这一点,即您没有从 $row 中删除尾随换行符。你这样做
chomp($row)

这样做作为 while block 的打开指令,你应该很高兴。

我必须强调在发布 MCV 时要格外小心的重要性。在您按下该提交按钮之前,将您帖子中的代码复制到一个临时文件并执行它,您将减少来自响应者的投诉。

顺便说一句,一个可能让您自己解决问题的良好调试习惯是在执行 Net::OpenSSH->new 之前添加这一行
print STDERR ";$row;\n" if $debugging;  # or something to this effect

如果你这样做了,你会在 STDERR 上看到类似的东西
;myhost
;

此外,您正在使用的模块在其 pod 中提到了一个不错的调试功能。调试输出不是那么容易解释,但如果你不知道问题出在哪里,那么你可以从那里开始。如果您添加了这一行
$Net::OpenSSH::debug = 8;

然后你会在 STDERR 上看到这个
$ cat servers.txt
localhostx
$ perl x.pl
...
ssh: Could not resolve hostname localhostx
: nodename nor servname provided, or not known

如果您调用了 chomp 但主机名确实不存在,则看起来像这样
ssh: Could not resolve hostname localhostx: nodename nor servname provided, or not known

关于perl - 无法使用 Net::OpenSSH 进行 SSH,可以通过命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44958890/

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