Perl 在第15行使用未初始化值$stdout1

Perl 在第15行使用未初始化值$stdout1,perl,Perl,此脚本用于连接到交换机并打印其vlan列表,但输出为: 在第15行使用未初始化值$stdout1 编写perl的规则1使用严格使用警告 用no strict再次关闭它不算数 但即使启用了strict,我也无法复制您的问题。我所能想到的就是Net::SSH::Perlcmd函数没有返回结果 您可能希望更明确地检查它: my ($result, $errors, $exitcode ) = $ssh->cmd("show vlan"); print "$exitcode $errors\n"

此脚本用于连接到交换机并打印其vlan列表,但输出为:

在第15行使用未初始化值$stdout1


编写perl的规则1<代码>使用严格
使用警告

no strict
再次关闭它不算数

但即使启用了
strict
,我也无法复制您的问题。我所能想到的就是
Net::SSH::Perl
cmd
函数没有返回结果

您可能希望更明确地检查它:

my ($result, $errors, $exitcode ) = $ssh->cmd("show vlan");
print "$exitcode $errors\n";
print "$result\n";

我猜你的连接出了问题(可能是密码无效?

你关闭了
strict
?为什么?如果你有问题,解决问题,不要忽视它

  • 您需要检查各种命令的返回值。
    ssh->login
    有效吗?是不是
    Net::SSH::Perl->new
    ?使用
    或die
    验证他们是否确实返回了某些内容
  • 阅读文档
    ssh cmd
    返回一个三成员数组:
    • STDOUT
    • STDERR
    • 退出状态
注意,在这个程序中,我检查了每个方法返回
Net::SSH::Perl
类的情况

#! /usr/bin/env perl 
use strict;
use warnings;
use feature qw(say);   # Replaces 'print' with 'say'

use Net::SSH::Perl;

use constant {
    HOST        => '10.220.15.24',
    USER        => 'admin',
    PASSWORD    => 'admin',
};

my $ssh  = Net::SSH::Perl->new( HOST ) 
    or die qq(Can't SSH to host.);

$ssh->login( USER, PASSWORD );
    or die qq(Can't log into host.);

say "check the version of the build";
say "enter the config mode";
say " ahmed ";
my ( $stdout, $stderr, $exit_code ) = $ssh->cmd("show vlan")
    or die qq(Can't execute command.);
if ( $exit_code ) {
    say "Command returned an exit code of $exit_code"
}
say $stdout;
创建
$ssh
对象时,也可以传递
调试
选项:

my $ssh = Net::SSH::Perl->new( HOST, { debug => 1 } );

这可能会为您提供更多的线索,以了解正在发生的事情。

在ligne 15,而不是12,请帮助!!最常见的问题是连接件不需要换乘,也不需要更换。艾哈迈德:请用英语回复评论。上面的机器翻译:“我的问题是连接交换机而不是恢复sálist vlan”感谢您的帮助,但当我向我执行脚本时,它显示“在第行使用未初始化值$stdout”28@ysth我花了一段时间,但是是的,谢谢。
my $ssh = Net::SSH::Perl->new( HOST, { debug => 1 } );