【发布时间】:2018-07-13 14:59:05
【问题描述】:
我需要能够使用 Perl 来确定在我与之进行密钥交换的远程服务器上运行的 python 版本。为了尝试实现这一点,我一直在使用Net::SSH::Any,但想使用密钥交换而不是在脚本中指定密码。我查看了指定密码的 cpan 示例。
以下是我的 Perl 代码中的 sn-p,我正在尝试确定远程服务器上是否安装了 python 2.6。
my $ssh = Net::SSH::Any->new( $curIP, 'root' );
my @out = $ssh->capture("python -V");
my $outSize = @out;
my $ver26 = 0;
for ( my $j = 0; $j < $outSize; $j++ ) {
if ( index( $out[$j], "2.6." ) != -1 ) {
$ver26 = 1;
}
}
当我运行它时,它会抱怨并说需要指定主机:
./GenerateConfig.pl 第 162 行缺少强制参数主机
我修改了代码,使其看起来类似于在另一篇文章 (How can I FTP a file with an SSH key instead of a password, in Perl?) 中的完成方式,但它也失败了:
my $ssh = Net::SSH::Any->new( $curIP, {'root'} );
my @out = $ssh->capture("python -V");
my $outSize = @out;
my $ver26 = 0;
for ( my $j = 0; $j < $outSize; $j++ ) {
if ( index( $out[$j], "2.6." ) != -1 ) {
$ver26 = 1;
}
}
我怎样才能做到这一点,或者是否有替代方法来完成同样的事情?
【问题讨论】: