gpt4 book ai didi

windows - 使用 Windows 批处理脚本保护 FTP

转载 作者:可可西里 更新时间:2023-11-01 12:18:25 25 4
gpt4 key购买 nike

我目前在不同的服务器上有批处理脚本,可以将 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 :

Generate batch file

您需要调整的只是源文件名(如前所示使用 %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/16150152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com