etm*_*124 18 windows ftp sftp batch-file
我目前在不同的服务器上有批处理脚本,它们将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
Run Code Online (Sandbox Code Playgroud)
如果我想要一个安全的传输,我的脚本将如何更新?
谢谢.
Mar*_*ryl 33
首先,请确保您了解,如果您需要使用安全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
Run Code Online (Sandbox Code Playgroud)
和批处理文件:
winscp.com /log=ftpcmd.log /script=ftpcmd.dat /parameter %1 %date%
Run Code Online (Sandbox Code Playgroud)
虽然使用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"
Run Code Online (Sandbox Code Playgroud)
出于-hostkey切换的目的,请参阅在脚本中验证主机密钥.
比手动组装脚本/批处理文件更简单的方法是在WinSCP GUI中设置和测试连接设置,然后让它为您生成脚本或批处理文件:
您需要调整的只是源文件名(使用%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"
Run Code Online (Sandbox Code Playgroud)
-certificate如果服务器的证书不是由受信任的颁发机构颁发,则可能需要添加交换机.
同样,与SFTP一样,更容易在WinSCP GUI中设置和测试连接设置,然后让它为您生成脚本或批处理文件.
请参阅WinSCP的完整转换指南ftp.exe.
您还应阅读自动将文件传输到FTP服务器或SFTP服务器的指南.
请注意使用%TIMESTAMP#yyyymmdd%而不是%date%:%date%变量值的格式是特定于语言环境的.因此,请确保在实际要使用该脚本的同一语言环境中测试脚本.例如,在我的捷克语语言环境中%date%解析为?t 06. 11. 2014,当用作文件名的一部分时可能会出现问题.
因此,WinSCP 本身支持(区域设置中立)时间戳格式化.例如,%TIMESTAMP#yyyymmdd%解析为20170515任何语言环境.
(我是WinSCP的作者)
| 归档时间: |
|
| 查看次数: |
100992 次 |
| 最近记录: |