windows 命令行不支持被动ftp,如何通过写windows批处理,定时上传文件到FTP服务器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows 命令行不支持被动ftp,如何通过写windows批处理,定时上传文件到FTP服务器?相关的知识,希望对你有一定的参考价值。
我的客户端是windows,通过写windows批处理,定时上传文件到FTP服务器。
windows 命令行不支持被动ftp?如何写此windows批处理?谢谢!^_^~~
可以使用命令行工具curl,它支持被动模式的ftp访问 参考技术A 试下下面的写法,应该OK的:
set "ftpUser=UserName"
set "ftpPass=PassWord"
set "ftpIP=目标IP地址"
set "ftpFile=%temp%\Temp.txt" >"%ftpFile%" (
echo,%ftpUser%
echo,%ftpPass%
echo bin
echo Prompt off
echo cd 目标目录
echo lcd 本地目录
echo mput 文件
echo bye
)
ftp -s:"%ftpFile%" %ftpIP%追问
麻烦示例一下,
echo cd 目标目录
echo lcd 本地目录
怎么写?
上传是文件在局域网内部,有防火墙阻挡。自然只能使用被动模式与FTP服务器成功建立数据连接的。而想写windows批处理,自然要用到windows命令行。则windows命令行,只支持主动模式。 所以,难以实现。 将注意力投向linux。
追答服务器防火墙打开20和21端口,客户端不需要做任何设置就能访问到了.
这是网络的问题和批处理是没有太大关系的.如果用linux来解决,不如把防火墙都关闭,换成ipsec防火墙来做安全.
公司服务器在IDC机房,有防火墙保护;需要上传文件的windows客户端在办公室,也有防火墙。 现状:FTP服务器21、20端口,是全部打开的。在FTP主动、被动模式讨论中,防火墙是会把FTP服务端连接过来的的20端口阻挡掉。被动模式是为了穿过防火墙的。如果写windows批处理,当然靠windows命令行来运行了。windows命令行不支持FTP被动模式(用windows命令行连接的FTP全是主动模式的)。
追答如果服务器上允许到20-21端口,
客户端又允许来自20-21端口,那么何来防火墙限制,又何须考虑哪种模式。
一直用iis架设的ftp,服务器上有访问策略,还有acl防火墙保护。
客户端也有acl防火墙保护,同时还开启了windows防火墙,使用cmd ftp从未遇过连接和传输问题。
windows批处理,都是运行在CMD 命令行的。
你知道,用cmd命令登陆FTP上传下载是哪种使用哪种模式?我的答案是主动模式。如果这个概念搞不清楚,先打住。
我的FTP服务器是SERV-U,采用默认设置,意味着被动、主动都是开启的(同网段服务器之间可相互用cmd命令行登陆、并上传下载FTP文件)。 可见是我的局域网防火墙阻挡了20端口,只允许被动模式与FTP建立连接了。
所以问题是打开防火墙,而无需纠结模式.
追问现在,防火墙上采用默认设置(默认支持被动),无需特意为FTP做相关设置。一种模式即可满足需求。~~~我看你“针对此种环境下的windows 批处理怎么写?” 括号中,只问题关键所在。否则,我也无需追问。
追答我的回答没有显示,去我的空间看看吧?用powershell写的脚本上传ftp.
如果需要被动模式,加上如下语句就可以了.
$upFTP.UsePassive= $true;
以上是关于windows 命令行不支持被动ftp,如何通过写windows批处理,定时上传文件到FTP服务器?的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu和centos,centos上用vsftp搭建FTP服务器,windows上用FileZilla Client主被动模式都可以正常访问