在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这两天为了实现远程登录折腾了两三天,先是查阅了实现方法,网上用Perl实现就有很多方法。 1.使用Net::SSH::Perl 2.使用Expect模块 3.使用Net::SSH::Expect 4.直接使用shell命令实现ssh -p port username@IP $passwd 这些方法中准备使用Perl的Net::SSH::Perl 模块来实现,因为网上代码有很多,而且可读性强,比如下面脚本 #!/usr/bin/perl use strict; use warnings; use Net::SSH::Perl; my $ssh = Net::SSH::Perl->new("192.168.4.217", port => 22); print "login\n"; $ssh->login("root", "123qwe"); print "cmd\n"; my ($stdout, $stderr, $exit) = $ssh->cmd("ls -l /tmp"); print "$stdout\n"; 但是在安装时候遇到了一系列的问题,首先明确Net::SSH,Net::SSH2,Net::Telnet与Net::SSH::Perl 模块并没有关系,连依赖都没有,我试着安了两台机器,发现Net::SSH::Perl 模块需要如下的依赖包(使用instmodsh命令可以看到安装了哪些模块): Crypt::DES 我到cpan下搜索出这些包一个一个的安装(因为CentOS主机不能联网),当然我是先运行上面那个perl脚本,才一个一个发现需要的依赖的。这里面除了Math::Pari,其他模块都可以直接这样做。 1.tar zxvf 压缩包 2.cd 目录下 3.perl Makefile.PL 4.make 5.make install (网上很多都说需要make test ,我没有test也能正常使用,但是第一次安装的时候,test有问题则安装失败) 只有Math::Pari这个包有问题,如果直接像上面那样做,安装提示有error,网上说是缺少Pari lib包(不是一样的,需要到Pari的网站去下载,不是CPAN),网站上最新的是pari-2.5.3,安装时1 ./Configure 2 make 3 make install,一开始安装有问题,但是还是安装成功了,但是这时安装Math::Pari 模块会提示你Version too new,网上有人说是新版本不支持,我有下载了2.3.0.安装后还是有点问题,后来又下载了pari-2.1.7,我看模块的Readme里面写的需要2.1.7的包,所以下了,鼓弄半天不怎么就安装上了,后来就觉得其实不用安装pari lib包,直接解压到Math-Pari 包里,他自己就去读他要的文件了,然后不用make test,直接make install,好像就可以,因为前几次就是卡在了make test里面。 这次的环境搭建让我知道了安装模块之间有很强的依赖,如果没有安装全,就会出现 Can't locate XXX/XXX.pm 这样类似的错误,安装之前最好读下包里面的README 或者 INSTALL文件,有能力之后可以读下他的Makefile,可以学到不少。 在不同版本的Perl下,可能需要的包不一定相同,在第一次安装的机器上是Perl 5.14 ,后来又在Perl 5.8.8里安装一遍,用到了一个Digest-SHA包,而不是Digest-SHA1包,可能是低版本发行时没有SHA1. |
请发表评论