我需要能够使用Perl来确定在我与其进行密钥交换的远程服务器上运行的python版本。为了尝试实现这一点,我一直在使用Net::SSH::Any
但是想要使用密钥交换而不是在脚本中指定密码。我看过cpan的例子,它指定了密码。
以下是我的Perl代码的片段,我正在尝试确定远程服务器上是否安装了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;
}
}
我怎么能这样做,还是有替代方法来完成同样的事情?
答案 0 :(得分:3)
根据Net::SSH::Any的文档,您需要传递主机名和选项对:
my $ssh = Net::SSH::Any->new($curIP, user => 'root');