2012-11-28 137 views
0

任何人都有一个想法会是什么问题?无法登录到FTP服务器

#!/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目录

的一个后。日志包含

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

我通常会发现创建一个netrc文件,并至少启动我的FTP会话让我遇到很多脚本化ftp会话的问题。大多数ftp程序都提供了使用备用文件netrc的选项,因此您无需在$HOME/.netrc上设置一个文件。

我相信,你只需要一个衬垫这样的:

machine 192.163.3.3 login ftpuser password apple 

不幸的是,我无法测试它,因为我没有FTP设置任何地方。这里的一切都是scp/ssh/sftp。这是一个example.netrc文件。

3

您的FTP守护进程拒绝被动模式文件传输(PASV命令)。您必须在Pure-FTPd上启用被动模式传输。这个网站有很好的教程,如何做到这一点: Getting passive FTP connections to work through a firewall properly - 向下滚动到设置FTP服务器(Pure-FTPD)部分。

+1

另一个脚本的作品,但只运行一次,用这个脚本将是问题 – Smithis

+0

你可以写一个单行描述如何做到这一点? –

0

它抱怨被动模式,我会从命令中删除-p或允许被动FTP。

-p 使用被动模式进行数据传输。允许在防火墙阻止来自外部世界的连接回到客户端机器的环境中使用ftp。要求ftp服务器支持PASV命令。由于使用PORT传输模式的安全问题,这是所有客户端(ftp和pftp)的默认设置。该标志只保留兼容性,不再有效果。

+0

如果我删除grep:a.log:没有这样的文件或目录 ftp:bind:地址已经在使用 – Smithis

+0

另一个简单的脚本与-p一起工作,不是这个问题 – Smithis

相关问题