lftp 550权限被拒绝
我试图创建一个脚本,使用lftp将一些文件上传到ftp服务器,但到目前为止没有任何运气。如果我在debian中使用内置ftp命令,我会成功地连接并放置文件。 以下是lftp命令的调试输出:lftp 550权限被拒绝,ftp,debian,lftp,Ftp,Debian,Lftp,我试图创建一个脚本,使用lftp将一些文件上传到ftp服务器,但到目前为止没有任何运气。如果我在debian中使用内置ftp命令,我会成功地连接并放置文件。 以下是lftp命令的调试输出: lftp xxx.xxx.xxx.xxxx -e "put -O /out/ some_file_name" -d ---- using user `user01' and password from ~/.netrc ---- Resolving host address... ---- 1 address
lftp xxx.xxx.xxx.xxxx -e "put -O /out/ some_file_name" -d
---- using user `user01' and password from ~/.netrc
---- Resolving host address...
---- 1 address found:xxx.xxx.xxx.xxxx
---- Connecting to xxx.xxx.xxx.xxxx (xxx.xxx.xxx.xxxx) port 21
<--- 220 (vsFTPd 2.0.7)
---> FEAT
<--- 211-Features:
<--- EPRT
<--- EPSV
<--- MDTM
<--- PASV
<--- REST STREAM
<--- SIZE
<--- TVFS
<--- UTF8
<--- 211 End
---> OPTS UTF8 ON
<--- 200 Always in UTF8 mode.
---> USER user01
<--- 331 Please specify the password.
---> PASS XXXX
<--- 230 Login successful.
---> PWD
<--- 257 "/"
---> TYPE I
<--- 200 Switching to Binary mode.
---> EPSV
<--- 550 Permission denied.
---- Switching passive mode off
---- Closing data socket
---- Closing control socket
lftp xxx.xxx.xxx.xxxx-e“put-O/out/some\u file\u name”-d
----使用~/.netrc中的用户“user01”和密码
----正在解析主机地址。。。
----找到1个地址:xxx.xxx.xxx.xxxx
----连接到xxx.xxx.xxx.xxxx(xxx.xxx.xxx.xxxx)端口21
壮举
550权限被拒绝。
是对EPSV
命令的奇怪响应,这意味着服务器或介于两者之间的某个中间箱不理解EPSV
命令(可能是一个中间箱,因为对FEAT
的响应显示了所支持的EPSV
)。如果使用内置的ftp
命令而不是lftp
,则可能会使用较旧的PASV
命令(仅限IPv4),而不是较新的EPSV
命令(支持IPv4+IPv6)
根据需要,有一个设置ftp:preferredepsv
,它应该默认为false
。可能某些配置正在将此值设置为true,以便lftp
将使用EPSV
而不是PASV
。检查您的设置(set-a
在lftp中),如果设置为真(预期),请将其设置为false
,然后重试,希望在添加set ftp:passive mode true
和set ftp:preference EPSV false
而不是/etc/lftp.conf之后,它将使用PASV
而不是EPSV
来更改错误
<--- 230 Login successful.
---> PWD
<--- 257 "/"
---> TYPE I
<--- 200 Switching to Binary mode.
---> PASV
<--- 227 Entering Passive Mode (xxx.xxx.xxx.xxx,76,92)
---- Connecting data socket to (xxx.xxx.xxx.xxx) port 19548
---- Data connection established
---> ALLO 710
<--- 550 Permission denied.
---> STOR out/my_file_name
---> ABOR
put: Access failed: 550 Permission denied. (/out/my_file_name)
---- Closing aborted data socket
---- Closing control socket
PWD
第一类
PASV
ALLO 710
存储输出/我的文件名
--->流产
put:访问失败:550权限被拒绝。(/out/my_文件名)
----关闭中止的数据套接字
----闭合控制插座
好吧,我明白ALLO的意思
ALLO命令可以发送到服务器,该服务器在传输之前需要为上传的文件保留必要的空间
所以在ftp手册页中快速搜索之后,我找到了一个关闭它的命令。添加set ftp后:使用allo-false
和epsv-false
现在一切正常。非常感谢:)设置ftp:使用allo false;设置ftp:被动模式true;设置ftp:首选epsv false;镜像-R{local dir}{remote dir}“-u{username},{password}{host}
使用此单一命令将文件从本地同步到服务器,无需550权限错误。如果只编写内置debian命令的脚本,会发生什么情况?我使用lfpt的“mv”命令,因为根据规范必须上载文件,完成后我必须重命名它。例如,“将Xsome_file_name-O/some_remote_dir/”放在“cd/some_remote_dir/;mv Xsome_file_name some_file_name”之后。此外,我没有找到一种方法来上传一个文件使用一行命令,上传文件到一些远程目录只使用ftp。