概要
WinSCPにはコマンドラインインターフェースがあり、これにより複数のサーバにログインして一気にファイルをアップロードする、など、いろいろできます。
今回はAWS EC2にあるファイルのダウンロードとアップロードを行います。
したいこと
- ダウンロード先(以降、EC2(hoge)とする)からzipファイル(/home/ec2-user/test.zip)をダウンロード
- 上記ファイルをアップロード先(以降、EC2(piyo)とする)にアップロード
- アップロードしたZIPファイルの解凍と削除
上記を1コマンドで行うスクリプトを作成します。
サーバ状況
コマンド
WinSCPをインストールしたディレクトリにWinSCP.comファイルがあります。
コマンドプロンプトで以下を実行します。
winscp.com /script=updown.txt
実際のダウンロード、アップロード処理は別ファイルに記述し、/scriptパラメタに指定します。
updown.txt
# 入力を求められたとき自動でNOで答える
option batch on
# 実行しているコマンドのechoを表示するか
option echo on
# getやputでファイルの上書きなどの確認を行うか
option confirm off
#EC2(hoge)からZIPダウンロード
## ログイン(セッションスタート)
## -privatekey 秘密鍵ファイルを指定する。ppk形式。
## -hostkey SSH key fingerprintsを指定する。
open scp://ec2-user@13.231.179.203:22/ -privatekey=ksatou.ppk -hostkey="ssh-ed25519 256 2/fGEolaTkr+D/JQy4b2LvV4wVqoY/M+757ezS84Rbk"
## ファイルをローカルPCにダウンロード
get /home/ec2-user/test.zip G:\tmp\test.zip
# ログアウト(セッションクローズ)
close
#EC2(piyo)へzipをアップロード
open scp://ec2-user@13.114.198.4:22/ -privatekey=ksatou.ppk -hostkey="ssh-ed25519 256 /KO8oL/XL9W7s1+AtroOAJuwAek6KPsgvuz3Nk4XwiM="
## アップロード
put "G:\tmp\test.zip"
# callでシェルコマンドが使用できる
# unzipでアップロードされたzipを解凍
call unzip test.zip
# zipファイルの削除
rm test.zip
close
結果
#参考
https://winscp.net/eng/docs/scriptcommand_open
https://qiita.com/ptiringo/items/90f5246f554da80b1774