WinSCPをバッチで実行する備忘です。
WinSCPって?
WinSCPとはSCP/SFTP/FTPS対応のFTPクライアントで、サーバ上のファイル等をダウンロードしたり、ローカルからアップロードしたりする際によく使用されるソフトウェアです。GUIでドラッグ&ドロップしたり、エクスプローラーっぽく使えるのですが、定型作業など決まったことはバッチで自動化したいところです。GUI操作だとやはりオペミスの懸念は残りますし。ということで、バッチで実行する方法を整理しました。
バッチで実行する
FTPをバッチで実行するときと同じように、コマンド用のファイルを予め用意しておく必要があります。今回はダウンロードするサンプルを用意します。(アップロードの場合はgetではなくputになります)
「auto-download-winscpcmd.txt」というファイルに以下を記載します。
option batch on
option transfer binary
open [ユーザID]:[パスワード]@[サーバIP]
get [DLするファイル名(フルパス)] [DLファイル格納先]
close
exit
汎用的にする場合、以下のように引数で渡すようにすることもできます。
option batch on
option transfer binary
open %1%:%2%@%3%
get %4% %5%
close
exit
で後はこの「auto-download-winscpcmd.txt」を使ってWinSCPをバッチで実行することになります。実行するコマンドは以下になります。
※WinSCP.comの格納パスはWindows環境に応じて変更してください
※引数ありのパターンです(/parameterで指定する)
cd /d [auto-download-winscpcmd.txtの格納フォルダ]
"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=auto-download-winscpcmd.txt /parameter hoge password 111.111.222.222 /etc/passwd ".\"
このコマンドを実行するだけでダウンロードできるのでバッチファイルにして自動化して少し楽になりましょう!
その他
- WinSCPで接続先サーバに初回ログインの場合、フィンガープリント登録がある関係でbatch onにすると認証エラーになります。(対話形式で「はい」としていかないといけないので)一度ログインしてフィンガープリントを登録しておく必要があります。
- よく使われるSSHクライアントのTeratermでもマクロ機能でアップロード(scpsend)やダウンロード(scprecv)は出来ますが、非同期で実行されるので注意が必要です。
- こちらのページがとても参考になります
- 以下コマンドでログイン画面を省略してWinSCPを起動することもできます。
"C:\Program Files (x86)\WinSCP\WinSCP.exe" sftp://[ユーザID]:[パスワード]@[サーバIP]
コメント