【发布时间】:2019-02-03 20:39:07
【问题描述】:
我是 LFTP 的新手,正在尝试使用 LFTP 通过 perl 代码自动传送文件。我能够设置代理服务器并连接到远程主机,还能够使用 perl 代码成功地将文件传输到远程主机。但是我无法从 lftp transfer 获得响应,这可以让我的 perl 工作知道转移已成功完成,因为考虑到转移存在一些问题,我的 perl 工作失败了。我也尝试过详细选项,但在使用 lftp 传输文件时它也没有显示任何响应。
open(FTP,"lftp -vvv <command_file |")
command_file 有以下代码行:
set ftp:proxy http://proxy_server:port
open ftp://remote_server_name
user user_name password
cd /remote_server_dir
put /local_server_file_name -o remote_server_file_name
现在调用此代码“FTP”后,文件已成功传输到远程主机,但要验证它是否成功,我使用以下代码:
while(<FTP>)
{
print $_;
if ((/transferred/))
{
# successful
}
else
{
# not successful
}
}
手动执行 LFTP 时会给出类似300 bytes transferred 的响应。因此,我尝试使用关键字transferred 作为成功转移的标志。但似乎在通过 perl 运行此 LFTP 时,我根本没有得到任何响应。
请告诉我如何在通过自动作业成功传输文件后从远程服务器获取响应。 谢谢!
【问题讨论】:
-
你为什么不用Net::FTP?
-
Net :FTP 没有选择代理设置。只有在没有代理的情况下才有效。
-
可能是 'expect' 程序可以处理的事情?
-
尝试在命令文件中添加“set interactive yes”。
-
问题是不是命令行不正确?我刚刚在我的 Linux bash 上尝试了 lftp 4.8.4,但无法让
<command_file工作。只有-f command_file有效。
标签: perl ftp file-transfer lftp