gpt4 book ai didi

perl - openSSH - 无法调用方法捕获

转载 作者:行者123 更新时间:2023-12-02 14:37:44 25 4
gpt4 key购买 nike

我正在使用 NET::OpenSSH PERL 的模块。我在简单的脚本上进行了尝试,它运行良好。

现在我将它包含在一个更大的脚本中:

switch ($ARGV[2]) {

case "OBS" {

my $ssh = Net::OpenSSH->new("$user:$passwdobs\@$ARGV[1]");
if ($ssh->error) {
print ERR_REPORT_SSH "Echec ssh sur " . $ARGV[1] . " erreur a gerer plus tard\n";
die "Echec du ssh sur " . $ARGV[1] . "\n";
}
}

我还有 2 个与此类似的案例,只有“案例“OBS””正在更改,并且密码随之更改。
变量 $ssh 永远不会未初始化。

在脚本的后面,我写了这个:
open(SSHCONFIG, "/tech/gtr/scripts/osm/environnement_qualif/scan-rh2/bin/ssh.conf");
while (<SSHCONFIG>) {
@ligne = split(/;/, $_ );
$listop = $ligne[0];
$listcmd = $ligne[1];
$fileprefix = $ligne[2];

if ($listop =~ /$operateur/) {
print "l'operateur match\n" . "commande : " . $listcmd . "\n";
#sendCommand($listcmd, $fileprefix);
my $out1 = $ssh->capture($listcmd);
print $out1 ;
}
else {
next;
}
}

虽然“ssh.conf”文件中有内容,但脚本应该执行文件中给出的命令。
但是,当启动时,脚本会因以下错误而停止:
l'operateur match
commande : show arp
Can't call method "capture" on an undefined value at sshscript.pl line 65, <SSHCONFIG> line 1.

如您所见,我的 $listcmd 变量不为空。
为什么不能调用捕获方法?
谢谢。

最佳答案

变量 $ssh case "OBS" 末尾超出范围堵塞。

在脚本开头启用限制很容易发现这种错误:

use strict;
use warnings;

顺便说一句,不要使用 Switch ,它被设计破坏,可能会在您的脚本中引入难以找到的错误。

关于perl - openSSH - 无法调用方法捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24258901/

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