我目前在不同的服务器上有批处理脚本,可以将 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
如果我想要求安全传输,我的脚本将如何更新?
谢谢。
最佳答案
首先,确保你理解,如果你需要使用Secure FTP (=FTPS,根据您的文字)或 SFTP (根据您使用的标签)。
Windows 命令行 ftp.exe
都不支持。正如您所建议的,您可以使用 WinSCP .它同时支持 FTPS 和 SFTP。
使用 WinSCP,您的批处理文件看起来像(对于 SFTP):
echo open sftp://ftp_user:password@ftp.MyFTPSite.com -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 的所有功能(特别是 providing commands directly on command-line 和 %TIMESTAMP%
syntax ),批处理文件简化为:
winscp.com /log=ftpcmd.log /command ^
"open sftp://ftp_user:password@ftp.MyFTPSite.com -hostkey=""...""" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
关于 -hostkey
开关的用途,参见 verifying the host key in script .
比手动组装脚本/批处理文件更容易的是在 WinSCP GUI 中设置和测试连接设置,然后使用它 generate the script or batch file for you :
您需要调整的只是源文件名(如前所示使用 %TIMESTAMP%
语法)和日志文件的路径。
对于 FTPS,替换 open
command 中的 sftp://
使用 ftpes://
( explicit TLS/SSL ) 或 ftps://
( implicit 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"
如果您的服务器证书是not issued by a trusted authority,您可能需要添加-certificate
开关。 .
同样,与 SFTP 一样,更容易在 WinSCP GUI 中设置和测试连接设置,然后使用它 generate the script or batch file for you .
查看完整的 conversion guide from ftp.exe
to WinSCP .
您还应该阅读 Guide to automating file transfers to FTP server or SFTP server .
使用 %TIMESTAMP#yyyymmdd%
而不是 %date%
的注意事项:%date%
变量值的格式是区域特定的.因此,请确保在实际要使用脚本的同一区域设置上测试脚本。例如,在我的捷克语言环境中,%date%
解析为 čt 06. 11. 2014
,用作文件名的一部分时可能会出现问题。
因此 WinSCP 支持 (locale-neutral) timestamp formatting natively .例如,%TIMESTAMP#yyyymmdd%
在任何区域都解析为 20170515
。
(我是 WinSCP 的作者)
关于windows - 使用 Windows 批处理脚本保护 FTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58334441/