我现在有对在不同位置的CSV文件传送到FTP服务器不同的服务器批处理脚本。 我的脚本看起来与此类似:
echo user ftp_user> ftpcmd.dat
echo password>> ftpcmd.dat
echo put c:\directory\%1-export-%date%.csv>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.MyFTPSite.com
del ftpcmd.dat
如果我想需要一个安全的传输,是如何将我的脚本进行更新?
谢谢。
首先,确保你明白,如果你需要使用安全的FTP (FTPS =,按你的文本)或SFTP (按标签已使用)。
无论是通过Windows命令行支持ftp.exe
。 正如你所说,你可以使用WinSCP赋予 。 它支持FTPS和SFTP。
的WinSCP,您的批处理文件看起来像(用于SFTP):
echo open sftp://ftp_user:password@ftp.MyFTPSite.com -hostkey="server's hostkey" >> ftpcmd.dat
echo put c:\directory\%1-export-%date%.csv >> ftpcmd.dat
echo exit >> ftpcmd.dat
winscp.com /script=ftpcmd.dat
del ftpcmd.dat
和批处理文件:
winscp.com /log=ftpcmd.log /script=ftpcmd.dat /parameter %1 %date%
虽然的WinSCP(特别是工具的全部功能提供直接在命令行命令和%TIMESTAMP%
语法 ),批处理文件简化为:
winscp.com /log=ftpcmd.log /command ^
"open sftp://ftp_user:password@ftp.MyFTPSite.com -hostkey=""server's hostkey""" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
为宗旨-hostkey
开关,看到验证脚本主机密钥 。
对于手动脚本/批处理文件更容易是安装并测试GUI的WinSCP连接设置,然后让它为您生成脚本或批处理文件 :
所有你需要调整的是源文件名(使用%TIMESTAMP%
语法如前所示)和路径日志文件。
对于FTPS,更换sftp://
在open
命令与ftpes://
( 明确的TLS / SSL )或ftps://
( 隐式TLS / SSL )。 拆下-hostkey
开关。
winscp.com /log=ftpcmd.log /command ^
"open ftps://ftp_user:password@ftp.MyFTPSite.com -explicit" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
您可能需要添加-certificate
开关,如果你的服务器的证书不是由受信任的机构颁发 。
此外,与SFTP,更容易是安装并测试GUI的WinSCP连接设置,然后让它为您生成脚本或批处理文件 。
看到一个完整的从转换指南ftp.exe
到WinSCP赋予 。
你也应该阅读指南,以自动化的文件传输到FTP服务器或SFTP服务器 。
注意,使用%TIMESTAMP#yyyymmdd%
而不是%date%
:的格式%date%
变量值是区域特异性的。 因此,请确保您测试您确实要使用脚本在同一区域的脚本。 例如在我的捷克区域设置%date%
解析到čt 06. 11. 2014
,作为文件名称的一部分使用时,可能是什么问题。
为此WinSCP赋予支持(区域中性)日期和时间格式本身 。 比如%TIMESTAMP#yyyymmdd%
解析为20170515
的任何区域。
(我的WinSCP的作者)
内置的FTP命令没有安全设施。 使用cUrl作者来代替。 这是编写脚本,更强大,并具有FTP的安全性。
ftps -a -z -e:on -pfxfile:"S-PID.p12" -pfxpwfile:"S-PID.p12.pwd" -user:<S-PID number> -s:script <RemoteServerName> 2121
S-PID.p12 => certificate file name ;
S-PID.p12.pwd => certificate password file name ;
RemoteServerName => abcd123 ;
2121 => port number ;
ftps => command is part of ftps client software ;