任何人都知道会出现什么问题?
#!/bin/bash -x
HOST='192.163.3.3'
USER='ftpuser'
PASSWD='apple'
Logfile=a.log
while :; do
ftp -n -p -v $HOST < example.script >> a.log
grep -qF "Connected" a.log &&
grep -qF "File successfully transferred" a.log && break
done
quote USER $USER
quote PASS $PASSWD
example.script包含
put example.txt
运行后给出
grep: a.log: No such file or directory
grep: a.log: No such file or directory
.
.
example.script,创建的a.log位于/ home目录
a.log包含
Connected to 192.163.3.3.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 9 of 50 allowed.
220-Local time is now 14:38. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Remote system type is UNIX.
Using binary mode to transfer files.
local: example.txt remote: example.txt
530 You aren't logged in
Passive mode refused.
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.
为什么我无法登录?
HOST='192.163.3.3'
USER='ftpuser'
PASSWD='apple'
FILE='example.txt'
Logfile=a.log
ftp -n -p -v $HOST << SCRIPT_END >> a.log
quote USER $USER
quote PASS $PASSWD
put $FILE
SCRIPT_END
这有效但为什么?会有什么区别?
答案 0 :(得分:3)
您的FTP守护程序拒绝被动模式文件传输(PASV命令)。您必须在Pure-FTPd上启用被动模式传输。这个网站有很好的教程如何做到这一点: Getting passive FTP connections to work through a firewall properly - 向下滚动到设置FTP服务器(Pure-FTPD)部分。
答案 1 :(得分:0)
抱怨处于被动模式,我会从命令中删除-p或允许被动FTP。
-p 使用被动模式进行数据传输。允许在防火墙阻止来自外部世界的连接回到客户端计算机的环境中使用ftp。要求ftp服务器支持PASV命令。由于使用PORT传输模式的安全问题,这是所有客户端(ftp和pftp)的默认设置。该标志仅用于兼容性,不再有效。
答案 2 :(得分:0)