gpt4 book ai didi

perl - Net::SCP/Net::SCP::Expect - 如何处理密码与 key 认证

转载 作者:行者123 更新时间:2023-12-01 12:00:40 29 4
gpt4 key购买 nike

我有一个适用于不同客户端的脚本,需要将 SCP 文件发送到不同的主机。根据客户端和服务器的组合,我可能需要使用密码身份验证或公钥身份验证。我真的无法提前知道使用哪一个。

我使用的 SCP 有 2 个 CPAN 库:

  • Net::SCP:仅适用于公钥身份验证
  • Net::SCP::Expect:仅适用于密码验证

问题是这两个库都不适用于这两种身份验证,我不知道提前使用哪个库。您知道有什么方法可以同时使用这两种身份验证方案吗?

最佳答案

尝试一个并故障转移到另一个:

#! /usr/bin/perl

use warnings;
use strict;

use Net::SCP qw/ scp /;
use Net::SCP::Expect;

my @hosts = qw/ host1 host2 host3 /;
my $user = "YOUR-USERNAME-HERE";
my $pass = "PASSWORD-GOES-HERE";
my $file = "file-to-copy";

foreach my $host (@hosts) {
my $dest = "$host:$file";

my $scp = Net::SCP->new($host, $user);
unless ($scp->scp($file => $dest)) {
my $scpe = Net::SCP::Expect->new;
$scpe->login($user, $pass);

local $@;
eval { $scpe->scp($file => $dest) };
next unless $@;

warn "$0: scp $file $dest failed:\n" .
"Public key auth:\n" .
" $scp->{errstr}\n" .
"Password auth:\n" .
" $@\n";
}
}

关于perl - Net::SCP/Net::SCP::Expect - 如何处理密码与 key 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030044/

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