【私的なメモ】SFTPコマンドをバッチで自動実行させてダウンロードとかさせるメモ

おんなまじゅつし★ミです。

前回はつながらずでしたが
先方の設定不備にて簡単につながるのね

ってことで
無事、つながるようになったので
やりたいことを実装するっしょ!

やりたいコト

  1. OPEN SSH の SFTPにて接続する

  2. 対象サーバからファイルをダウンロード

  3. 処理はバッチファイルで自動化

1でハマってましたが
先方がきっと悪かった??

って感じにて
1に関してはひとまずクリア!

あとは自動化してダウンロードするだけ?

使えそうなコマンド(cd、getなど)

SFTPの引数があれだったけど
コマンド自体はヘンタイじゃないんだね。
(ポート指定が -oport とか調べないとわかんないっす)

使えそうなコマンドを羅列する?

ローカル?サーバ??
→頭に l(エル)の有無で違うよ?
無知なだけかもですが
コマンドに l の有無で動きが違うよ?

例:
ls → サーバ側の一覧を取得
lls → クライアント側の一覧を取得

って感じにて
lの有無でクライアント、サーバを切り替え可能みたい。

ただしってことで
一部コマンドは l つけても動かないので注意?
(dir → ldir そんなコマンドないっしょで怒られる)

だしゅつする
bye
exit
→接続を終了する

ファイルの一覧取得
ls
dir
→ディレクトリ一覧を表示

ファイルのダウンロード
get ダウンロードファイル名
→ダウンロードを行う
→*にてワイルドカードが可能
→*○○*で曖昧検索でダウンロードも可能
→ダウンロード先はローカルのカレント
(保存時に場所は指定できない?)

ファイルのアップロード
put アップロードファイル名
→アップロードを行う
(やってないけどアップ先などはカレント位置?)

カレント位置の確認
pwd
→接続先のサーバでの位置が表示

って感じにて
簡単のコマンドだけ理解?

バッチで自動で実行させる

コマンドプロンプトにて
さくっとダウンロードなど出来たので
あとはコレを自動化すれば任務完了!

だったのだけど
bat にそのまま書いても動かない?

例:
SFTP 接続
get ファイル名
bye

実行して理解だけど
ログイン後に途中で止まってしまうんだね。

ってことで
命令用のバッチを作成して
接続にそれを呼べばよい?

例:
Sub.bat
→SFTPでやりたいコマンドを記載
→echo や rem は書けないので注意
→bye や exit はなくても良い?
(気持ち悪いので一応記載するひと)

というのを作って
以下のように呼べばよいみたい。

Main.bat
→sftp -b Sub.bat 接続情報

と書いてキックすればOK。

ファイル名などを動的にしたい?

変数にいれて加工すれば
そんなの楽勝っしょ??

と思ってたのだけど
SUB側で記載できるコマンドは
基本的に SFTP コマンドのみ・・・

!というエスケープ文字にて
echo などが使えるっぽいのだけど
いろいろやったけどうまくいかず??

さてどうする??

ってことで
あたまいい人ならば
もっと違うやり方あるかもだけど
私的な対策として以下で対応??

サブバッチを動的に作ればよくない?

動的という表現があれだけど
メイン側で テキスト出力を行って
サブ側を動的しちゃえてことです。

例:
echo cd ○○ > sub.txt
echo lcd ×× >> sub.txt
echo get *%date%* >> sub.txt
echo bye

と先に詠唱をしておいてから
sub.bat を呼べば実質動的起動じゃん。

ほかにもやり方あるかもだけど
手短にできるので私的にこれで対応します。

以上。

いいなと思ったら応援しよう!