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
ファイルをクリックするだけで実行する必要があります。しかし、それを達成することはできません。どんなアイデアやスニペットも助けてくれます。
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>
_
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