服务端用的Server-U,客户端是windows 2008,系统防火墙是开启的,win下的批处理脚本很简单,如下:


upload.bat

@echo off
rem
rem // Tianlesoftware
rem // Files Upload Scripts
rem // 2012-6-29
rem

echo open 192.168.3.168 > ftp.txt
echo username >> ftp.txt
echo password >> ftp.txt
echo bin >> ftp.txt
echo cd \GroupBackup >> ftp.txt
echo lcd E:\test >> ftp.txt
echo prompt >> ftp.txt
echo mput * >> ftp.txt
echo bye >> ftp.txt
ftp -s:ftp.txt
del ftp.txt



因为这里开启了防火墙,所以测试的时候遇到了一个问题,就是能在服务端创建文件,但是无法上传,会一直挂在:

150 OpeningBINARY mode data connection for…

Windows 下 ftp 上传文件 脚本_tcp


FTP 分主动和被动两种模式,这部分内容参考:

​http://hi.baidu.com/bystander1983/blog/item/4c264a7f9b1022240cd7da80.html​

 

FTP服务不象其它服务器,如DNS只使用UDP53端口,EMAIL只使用TCP的110和25端口,WEB使用TCP80端口,TFTP使用UDP的69端口,因为它的被动模式,服务器必须要提供一定的高于1024的端口供客户端使用。同时,我们也没有办法只要求用户只使用主动模式,因为用户可能并不了解这一情况,很多FTP客户端默认的是使用被动方式。因为,如果防火墙只开放20、21端口,会造成客户端可以进行用户验证,但无法列目录,也无法进行数据传送,并提示“你没有权限”这样的550返回错误。

 

 

解决方法一:设置端口

 

参考Blog:

​http://www.iwms.net/n1848c45.aspx​

 

(1)    静态端口地址映射,可以让用户通过外网地址+端口21来访问内网中特定的FTP服务;

(2)    在防火墙中设置ACL,充许用户可以通过TCP访问FTP服务器的6800-6900端口;

(3)    设置Serv-U的PASV:管理--本地服务器---设置--高级设置中,在Server栏中,设置PASV prots range为6800-6900

(4)    启用设置。


 

Windows 下 ftp 上传文件 脚本_windows_02

 

解决方法二:

关闭防火墙

 

解决方法三:

在防火墙里配置规则,开放所有端口,但只争对固定的IP地址。这样就不需要在Server-U里做修改。

 

 

其他链接:

Linux 终端访问FTP 及 上传下载 文件

​http://www.cndba.cn/Dave/article/679​

 

 

 

 

-------------------------------------------------------------------------------------------------------