webdevqa.jp.net

PuTTY / PSFTPファイル転送自動化のバッチファイル

SFTPを介してローカルPCからサーバーにファイルを移動するためのバッチファイルがあります。システムにPuTTYをインストールしました。バッチファイルのコードは次のとおりです。

cd C:\Program Files (x86)\PuTTY
psftp
open <IP>
<user>
<PW>
cd /home/irisuser/iris/integration/dls_dlsblr_dlschnn_in_msg/in
lcd d:\
put log.sh
bye

上記のコードは、コマンドプロンプトで入力すると完全に機能します。しかし、.batファイルをダブルクリックして実行すると、実行されず、ユーザー名とパスワードの入力を求められません。私の目的はすべてを自動化することでした。.batファイルをクリックするだけで実行する必要があります。しかし、それを達成することはできません。どんなアイデアやスニペットも助けてくれます。

14
suresh

Psftpスクリプト(openからbyeまでの行)を別のファイルに保存し、_-b_スイッチを使用してpsftpに渡す必要があります。

_cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt
_

ここで_script.txt_はC:\Program Files (x86)\PuTTYにあると想定されます。または、完全なパスを指定します(特にスペースが含まれる場合は、パスを二重引用符で囲むことを忘れないでください。cdコマンドを使用することをお勧めします)。

参照:
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter6.html#psftp-option-b


編集:ユーザー名+パスワードの場合:psftpコマンドをバッチファイルで使用できないため、同じ理由で、ユーザー名とパスワードをpsftpコマンドとして指定することはできません。これらはopenコマンドへの入力です。 openコマンド(_open <user>@<IP>_)でユーザー名を指定できますが、この方法ではパスワードを指定できません。これは、psftpコマンドラインでのみ実行できます。その後、コマンドラインですべてを実行する方がおそらくきれいです:

_cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt <user>@<IP> -pw <PW>
_

_<user>_からopen、_<PW>_、_script.txt_行を削除します。

参照:
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter6.html#psftp-starting
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-pw


あなたがやっているのは、パラメータやコマンドなしでpsftpを実行するということです。終了すると(byeと入力するなど)、バッチファイルはopenコマンド(およびその他)を実行しようとし続けますが、Windowsシェルは明らかに理解できません。


すべてを1つのファイル(バッチファイル)に保持したい場合は、次のようなコマンドをpsftp標準入力に書き込むことができます。

_(
    echo cd ...
    echo lcd ...
    echo put log.sh
) | psftp -b script.txt <user>@<IP> -pw <PW>
_
24
Martin Prikryl
set DSKTOPDIR="D:\test"
set IPADDRESS="23.23.3.23"

>%DSKTOPDIR%\script.ftp ECHO cd %PAY_REP%
>>%DSKTOPDIR%\script.ftp ECHO mget *.report
>>%DSKTOPDIR%\script.ftp ECHO bye

:: run PSFTP Commands
psftp <domain>@%IPADDRESS% -b %DSKTOPDIR%\script.ftp

上記の行の前にsetコマンドを使用して値を設定します。

これはあなたの役に立つと思います。

下のリンクのpsfptセットアップを参照してください https://www.ssh.com/ssh/PuTTY/putty-manuals/0.68/Chapter6.html

0
Rajkumar S