SSHでファイルアップロードするBatファイルを作成

windows

毎回Powershellを起動して、コンソールにsshの接続情報を入力するのが手間になってきたので、
  SSHログイン用Batプログラム
  SSHファイル送信用Batプログラム
を作成しました。
一度作っておくと便利です。もっと早く作っておけばよかったと後悔するレベルです。

環境

 クライアント windows 11
 サーバ VM上で動作するubuntu24.04LTS(192.168.19.129)
     OpenSSHサーバが稼働

SSHログイン用Batプログラム

 次の内容をテキストファイルで作成し、PS_login(local).batという名前でデスクトップに保存します。

@echo on
powershell -Command "Start-Process powershell -ArgumentList 'ssh remortuser@192.168.19.129' -NoNewWindow"

ユーザ名 remortuser
サーバ 192.168.19.129

※ペア鍵を生成し、パスワードレスでログインできるようにしています。

 実行方法は、Batファイルをダブルクリックするだけです。
 SSH用のパスワードを設定している場合はパスワードが要求されます

 Batプログラムを使ってPowershellを起動した様子

SSHファイル送信用Batブログラム

Batファイルの上に送信したいファイルをドロップすると、サーバ上の特定フォルダにアップロードします。

次のBatプログラムをテキストファイルで作成し、PS_upload(local).batという名前でデスクトップに保存します。

@echo on
setlocal enabledelayedexpansion

set SERVER_USER=remortuser
set SERVER_IP=192.168.19.129
set REMOTE_DIR=/home/remortuser/デスクトップ

if "%~1"=="" (
    echo No file dropped.
    pause
    exit /b
)

for %%F in (%*) do (
    set "FILE_PATH=%%F"
    echo Uploading "!FILE_PATH!" to %SERVER_USER%@%SERVER_IP%:%REMOTE_DIR%
    powershell -Command "scp -q `\"!FILE_PATH!`\" %SERVER_USER%@%SERVER_IP%:%REMOTE_DIR%"
    if errorlevel 1 (
        echo Failed to upload "!FILE_PATH!"
    ) else (
        echo Successfully uploaded "!FILE_PATH!"
    )
)

pause

ユーザ名 remortuser
サーバ 192.168.19.129

送信先は固定です
必要に応じて「www」等を追加してもらえばいいと思います。

終わりに

 当たり前のことしかやっていませんが、あると便利ですので、備忘録として残しておきます。