Perl 在第15行使用未初始化值$stdout1
此脚本用于连接到交换机并打印其vlan列表,但输出为: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"
在第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 } );