gpt4 book ai didi

perl - 在 Perl 的 ssh 连接中捕获错误主机名的错误消息(使用 Net::OpenSSH)

转载 作者:行者123 更新时间:2023-12-02 14:36:52 24 4
gpt4 key购买 nike

我正在使用 Net::OpenSSH 模块使用 ssh key 身份验证建立 ssh 连接。

my $ssh_handle = Net::OpenSSH->new(user_id@host_name)

我正在 try catch 在 ssh 连接尝试期间可能发生的不同异常情况。我为此使用 Try::Tiny。

特别是,我试图捕捉在参数中传递了错误的主机名/IP 地址的情况。
在这种情况下,Net::OpenSSH 模块在控制台中抛出以下错误“ssh:无法解析主机名 x.x.x.:名称或服务未知”。

我知道 $ssh_handle->error 给出了错误消息(如果出现任何错误)
连接尝试后。但在主机名/IP 错误的情况下,它会包含一条通用消息“无法建立主 SSH 连接:主进程意外退出”。
我相信这是许多错误场景的常见错误消息。所以我不能确定“错误的主机名”错误。

有什么方法可以捕获错误字符串“ssh:无法解析主机名 x.x.x.:名称或服务未知”?

最佳答案

将主 SSH 标准错误流重定向到某个文件并在之后查阅:

# untested!
open my $ssherr_fh, '>', 'openssh-err.log' or die $!;
my $ssh = Net::OpenSSH->new(user_id@host_name,
master_stderr_fh => $ssherr_fh);

if ($ssh->error) {
open my $f, '<', 'openssh-err.log';
my @err = <$f>;
print "ssh failed:\n@err\n";
}

关于perl - 在 Perl 的 ssh 连接中捕获错误主机名的错误消息(使用 Net::OpenSSH),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865960/

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