現在、別の場所にあるcsvファイルをFTPサーバーに転送するバッチスクリプトが、さまざまなサーバーにあります。私のスクリプトは次のようになります:Windowsバッチスクリプトを使用した安全なFTP
セキュリティで保護された送信が必要な場合は、スクリプトはどのように更新されますか?
ありがとうございました。
現在、別の場所にあるcsvファイルをFTPサーバーに転送するバッチスクリプトが、さまざまなサーバーにあります。私のスクリプトは次のようになります:Windowsバッチスクリプトを使用した安全なFTP
セキュリティで保護された送信が必要な場合は、スクリプトはどのように更新されますか?
ありがとうございました。
最初に、Secure FTP(= FTPS、テキストごとに)またはSFTP(ご使用のタグごとに)を使用する必要があるかどうかをご確認ください。
いずれもWindowsコマンドラインftp.exe
でサポートされていません。あなたが提案したように、WinSCPを使用することができます。 FTPSとSFTPの両方をサポートしています。 WinSCPのを使用して
、あなたのバッチファイルが(SFTPのため)のようになります。
echo open sftp://ftp_user:[email protected] -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のすべての機能を使用してますが(特にproviding commands directly on command-lineと%TIMESTAMP%
syntax)、バッチファイルは次のように簡略化されます。
winscp.com /log=ftpcmd.log /command^
"open sftp://ftp_user:[email protected] -hostkey=""server's 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について
、ftpes://
(explicit TLS/SSL)またはftps://
(implicit TLS/SSL)とopen
commandでsftp://
を置き換えます。 -hostkey
スイッチを取り外します。
winscp.com /log=ftpcmd.log /command^
"open ftps://ftp_user:[email protected] -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のの著者です)
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 ;
こんにちは、何をしているのか、OPがどのようなソフトウェアを使用しているのかなど、あなたのコードにいくつかのコンテキストを提供してください。 –
まず、たとえばSFTP – golimar