2013-04-22 12 views
14

現在、別の場所にあるcsvファイルをFTPサーバーに転送するバッチスクリプトが、さまざまなサーバーにあります。私のスクリプトは次のようになります:Windowsバッチスクリプトを使用した安全なFTP

セキュリティで保護された送信が必要な場合は、スクリプトはどのように更新されますか?

ありがとうございました。

+0

まず、たとえばSFTP – golimar

答えて

26

最初に、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を持っている:

Generate batch file

あなたが微調整する必要があるすべては、(ソースファイル名です前述のように%TIMESTAMP%の構文を使用します)とログファイルのパスを使用します。 FTPSについて


ftpes://explicit TLS/SSL)またはftps://implicit TLS/SSL)とopen commandsftp://を置き換えます。 -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のの著者です)

2

内蔵FTPコマンドにはセキュリティ機能がありません。代わりにcUrlを使用してください。スクリプト可能で、はるかに堅牢で、FTPセキュリティを備えています。

+0

はWinSCPのは、十分な代替だろう、サーバがセキュアなファイル転送プロトコルのいずれかの種類をサポートしていることを確認する必要があり、同じように? – etm124

-1
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 ; 
+1

こんにちは、何をしているのか、OPがどのようなソフトウェアを使用しているのかなど、あなたのコードにいくつかのコンテキストを提供してください。 –

関連する問題