【私的なメモ】SFTPコマンドをバッチで自動実行させてダウンロードとかさせるメモ
おんなまじゅつし★ミです。
前回はつながらずでしたが
先方の設定不備にて簡単につながるのね
ってことで
無事、つながるようになったので
やりたいことを実装するっしょ!
やりたいコト
OPEN SSH の SFTPにて接続する
対象サーバからファイルをダウンロード
処理はバッチファイルで自動化
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 を呼べば実質動的起動じゃん。
ほかにもやり方あるかもだけど
手短にできるので私的にこれで対応します。
以上。