【VBScript(WSH)】コマンドプロントからSFTPでファイルをアップロードする方法

【VBScript(WSH)】コマンドプロントからSFTPでファイルをアップロードする方法

【VBScript(WSH)】コマンドプロントからSFTPでファイルをアップロードする方法

Windows10ではコマンドプロントからssh接続ができるようになりました。
という事はSFTPだっていけるって事だよね。で、やってみたら簡単に成功。
秘密鍵なしの方法って意外と資料記事が少ないのでメモしておきます。

下準備:SSH接続できるようにする

下準備は次の2つのみです。

  1. PCのユーザーHomeに.ssh フォルダを作成
  2. .ssh\configに接続情報を記載

PCのユーザーHomeに.ssh フォルダを作成

コマンドプロントからの操作だったらこれでOK。
右クリック>>新規作成>>フォルダ で作成しても問題ありません。

秘密鍵がある場合はこの.sshフォルダにコピーを保存しておきます。
無い場合は次のconfigの設定で秘密鍵の記載をしないだけなので問題ありません。
(ログイン時にパスワードを求められるのでその対応をすれば問題なくSFTPが使えます)

.ssh\configに接続情報を記載

秘密鍵がある場合

秘密鍵がない場合

接続先が複数ある場合は【改行&Host接続名】で別の接続先を記載する

sftp接続を実行してみる

コマンドプロントで次のコードを打つだけで接続に入ります。

接続が実行されるとパスワード入力など次のアナウンスが出てくるので従いましょう。

SFTP操作のコマンド

コマンド 指示内容 備考
ls リモートサーバのファイルリスト取得
cd リモートサーバのディレクトリ移動 [cd(のみ)] ユーザーHomeへの移動
[cd ~] ユーザーHomeに移動せず怒られる
[cd /] ドライブ直下に移動
lls ローカルのファイルリスト取得
lcd ローカルのディレクトリ移動 [lcd c:/] でC:\への移動
[lcd(のみ)] でユーザーHomeへ移動
[lcd c:\] だとどこにも移動しない
get リモートサーバーからファイルUplode get リモートサーバ上のファイル名
put リモートサーバーへファイルUplode put ローカルのファイル名

注意点

備考にも書きましたが【 lcd c:\ 】と打ってもCドライブ直下へ移動しません。※全く移動を行わない
これはディレクトリの区切りが【\】ではなく【/】だからの様です。
その為、Cドライブ直下へ移動したいときは【lcd c:/】とします。

アップロード(ダウンロード)時にファイル名を変えたい場合

アップロードやダウンロード時に名前を変える

操作対象のファイル名に続けて【 半角スペース + 変更名 】とするだけで変更名で保存を掛けてくれます。
例えばこんな時に便利です。

  • ファイル名は日付が入っているけど、サーバー側の自動処理の関係でUplodeデータには日付を入れたくない

日付を外した状態で保存してあげれば良いだけなので、これだけで解決できます。

VBScriptで書いてみる

キーボード操作を追っただけですけどコレで接続とuplodeが実行できます。

VBScriptでコマンドプロントを起動

起動は空のオブジェクトを用意してcmd.exeをRUNするだけです。
接続先が固定の場合はこの後ろに接続コードを書けば1行でSFTP接続まで動きます。

まとめ

Windows10だと超簡単にSSH接続が可能です。
標準で入っているってすごい楽!

ただ、私が本当に動かしたいのはWindows Server 2016 だったりします。
だってねぇ、社内のローカルサーバーに入れてDB関連の連携処理を自動化させれば快適でしょ。
PC起動してない時間帯にも動かせますから色んなこと出来てしまいます。

で、これをシステム屋に外注すると100万超えると言われてしまったので自分で作ろうとなったんですよね。
WinServerだとOpenShell?
コマンドプロントで動かせるようにすればクライアントPCと同じスクリプトで行けるから作るのはそっちの方向だな。

さぁ、今日も頑張ろう!