我对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');
如果有人知道如何帮助我解决我的问题,那就太棒了:)
答案 0 :(得分:1)
让我们从另一个方向接近这个......当你说你“无法安装模块”时,那只是因为你没有root权限吗?如果是这种情况,您可以改为install them locally under a user account。
如果机器没有互联网连接甚至在本地安装它们,你可以使用相同的技术将它们安装在不同的盒子上,然后gzip你安装它们的整个本地目录并将它们复制到目标机器,并添加“use lib”语句以从脚本中获取它们。
答案 1 :(得分:0)
你确定$ passBox等效于shell吗?
您应该能够使用密钥对设置无密码连接,这会使问题很快消失。