使用Windows批处理脚本安全FTP(Secure FTP using Windows batch

2019-08-31 19:02发布

我现在有对在不同位置的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

如果我想需要一个安全的传输,是如何将我的脚本进行更新?

谢谢。

Answer 1:

首先,确保你明白,如果你需要使用安全的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的作者)



Answer 2:

内置的FTP命令没有安全设施。 使用cUrl作者来代替。 这是编写脚本,更强大,并具有FTP的安全性。



Answer 3:

    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 ; 


文章来源: Secure FTP using Windows batch script