Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl SSH脚本无法加载数学库?_Perl_Module_Ssh - Fatal编程技术网

Perl SSH脚本无法加载数学库?

Perl SSH脚本无法加载数学库?,perl,module,ssh,Perl,Module,Ssh,我正在尝试运行一个Perl脚本,它接受user、pass和ip参数,并使用这些参数通过ssh检查网络交换机的版本。但是,当我在服务器上运行它时,我不断得到: Math::BigInt:无法加载指定的数学库,回退到Math::BigInt::FastCalc at/usr/lib/perl5/site\u perl/5.10.0/Crypt/DH.pm第6行 它继续挂起一段时间,然后返回,没有输出。是什么导致了这一失败?我该如何应对?我没有向服务器安装额外模块的权限 编辑:我已经检查了当前安装的

我正在尝试运行一个Perl脚本,它接受user、pass和ip参数,并使用这些参数通过ssh检查网络交换机的版本。但是,当我在服务器上运行它时,我不断得到:

Math::BigInt:无法加载指定的数学库,回退到Math::BigInt::FastCalc at/usr/lib/perl5/site\u perl/5.10.0/Crypt/DH.pm第6行

它继续挂起一段时间,然后返回,没有输出。是什么导致了这一失败?我该如何应对?我没有向服务器安装额外模块的权限


编辑:我已经检查了当前安装的模块,Net::SSH:Perl、Math::BigInt::FastCalc和Math::Pari都已安装,所以我不知道为什么加载这些模块时会出现问题


以下是我的脚本供参考:

#!/usr/bin/perl


# Outputs the name of the Flash File (which denotes the software version) of the switch
#Input: User Pass Host

open(FH, ">>unparsed.txt");
open (FH2, ">>versions.txt");

use strict;
use Net::SSH::Perl;

my $user = $ARGV[0];
my $pass = $ARGV[1];
my $host = $ARGV[2];  #Hostname given as command line argument
my $cmd = "show version";
my $version;

print("\n");
print($ARGV[2]);
print("\n");

my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass); # login to switch
my($stdout, $stderr, $exit) = $ssh->cmd($cmd);

printf FH ($stdout); #output all test to file

close(FH);

open(FH, "unparsed.txt");

while(<FH>){  #look through file for flash filename
    if($_ =~ /System image file is "(.*)"/){
            $version = $1;
    }
}

print ($version); #output flash filename
print ("\n");

printf FH2 ($ARGV[2]);
printf FH2 ("\n");
printf FH2 ($version);
printf FH2 ("\n");

close(FH2);

close(FH);
#/usr/bin/perl
#输出交换机闪存文件的名称(表示软件版本)
#输入:用户通行证主机
打开(FH,“>>unparsed.txt”);
打开(FH2,“>>versions.txt”);
严格使用;
使用Net::SSH::Perl;
my$user=$ARGV[0];
my$pass=$ARGV[1];
my$host=$ARGV[2]#主机名作为命令行参数提供
my$cmd=“show version”;
我的$version;
打印(“\n”);
打印($ARGV[2]);
打印(“\n”);
我的$ssh=Net::ssh::Perl->new($host);
$ssh->login($user,$pass);#登录到交换机
my($stdout,$stderr,$exit)=$ssh->cmd($cmd);
printf FH($stdout)#将所有测试输出到文件
关闭(FH);
打开(FH,“unparsed.txt”);
while(){#在文件中查找闪存文件名
如果($\=~/系统映像文件为“(.*”/){
$version=$1;
}
}
印刷品(版本)#输出闪存文件名
打印(“\n”);
打印FH2($ARGV[2]);
打印FH2(“\n”);
打印FH2(版本);
打印FH2(“\n”);
关闭(FH2);
关闭(FH);
加载以下内容:

因此,您需要在系统上安装或

您的发行版的软件包管理器可能已经提供了安装它们的方法


您尝试过使用吗?

我更喜欢Net::SSH和Net::SFTP::Foreign,当我尝试在旧系统上安装数学库时,它们通常会给我带来麻烦(特别是一些系统管理员在Unix系统上对路径的乱操作)。大多数系统要么使用OpenSSH,要么使用它的某些分支(如Solaris上的Sunsh),因此使用这些发行版时不太可能出现任何问题。

尝试使用而不是Net::SSH::Perl

use Math::BigInt lib => "GMP,Pari";