PERL SFTP使用System,无法安装SFTP模块

时间:2012-11-06 18:41:39

标签: perl sftp

我对perl和stackoverflow有点新意。如果我可以使用更熟悉的语言,遗憾的是,由于某些情况,我不能。在此先感谢您的帮助。

未安装的模块:Net :: SFTP,WWW :: CURL,Net :: SSH2,Net :: SFTP :: Foriegn 安装的模块:Net :: FTP

我无法安装模块。

无法使用Net :: FTP Tried默认端口和端口22,用户名和密码。尝试连接时,我从其他框的日志中返回的是“没有从xx.xx.xx.xx接收标识字符串”也无法在命令行中使用FTP,超时。

$ftp = Net::FTP->new($box,Port=>22, Debug => 0)
or die print "Error: Cannot connect";
$ftp->login($userBox,$passBox)
or die print "Error: Cannot login";
$ftp->cwd()
or die print "Error: Cannot change to Root";
$ftp->cwd($dir)
or die print "Error: Cannot change to selected directory";
if($copyfile ne "" && $dir ne "")
{
$ftp->put($copyfile, $copyfile);
}
$ftp->quit();

我可以通过linux命令行手动使用SFTP,而不是FTP,所以我一直在尝试使用系统命令将SFTP导入到其他框中。另一个框的日志只是说“连接由xx.xx.xx.xx关闭”

system('sftp '.$userBox.'@'.$box.' ENDOFINPUT'
.$passBox.'ENDOFINPUT
cd ../../../
put '.$filename.' '.$dir.'
exit
ENDOFINPUT');

如果有人知道如何帮助我解决我的问题,那就太棒了:)

2 个答案:

答案 0 :(得分:1)

让我们从另一个方向接近这个......当你说你“无法安装模块”时,那只是因为你没有root权限吗?如果是这种情况,您可以改为install them locally under a user account

如果机器没有互联网连接甚至在本地安装它们,你可以使用相同的技术将它们安装在不同的盒子上,然后gzip你安装它们的整个本地目录并将它们复制到目标机器,并添加“use lib”语句以从脚本中获取它们。

答案 1 :(得分:0)

你确定$ passBox等效于shell吗?

您应该能够使用密钥对设置无密码连接,这会使问题很快消失。