2

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

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

我无法安装模块。

无法使用 Net::FTP 尝试了默认端口和端口 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');

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

4

2 回答 2

1

让我们从另一个方向来解决这个问题......当你说你“无法安装模块”时,仅仅是因为你没有 root 权限吗?如果是这种情况,您可以改为在本地用户帐户下安装它们。

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

于 2012-11-06T22:14:30.023 回答
0

您确定 $passBox 等效项在 shell 上有效吗?

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

于 2012-11-06T18:46:39.723 回答