WSLでsshpassを使ってscpファイル送信①


初めに

WSL(Ubuntu)で、シェルを実行したら、パスに記載しているファイルを指定サーバー上の指定フォルダに転送する。
どこまでファイルにして、どこまで実行ファイルに書くかはお好みで

実行(確認)環境

WSL2
Ubuntu 18.04
CentOS7(格納先)

フォルダ構成

# 実行フォルダ(どこでも大丈夫なハズ)
c:\test\
 ├ transport.sh
 ├ filepath(パスを記載)
 └ passfile(パスワードを記載)

# 転送ファイル群
c:\temp\
 ├ test1.txt
 ├ test2.txt
 └ test3.txt

ソース

設定ファイル系

filepath
C:/temp/test1.txt
C:/temp/test2.txt
C:/temp/test3.txt

※改行はLFで

passfile
hogehoge

※1行で記載する必要あり

シェルスクリプト

transport.sh
#!/bin/sh

# サーバーの転送先
SERVERPATH="/root/"
# sshのユーザー名
USERNAME="root"
# サーバーのホスト
SERVERHOST="XXX.XXX.XXX.XXX"

# ファイルパスをループ
for line in `cat filepath`
do
    # ローカルファイルパス変換
    upfiles=${upfiles}$(wslpath -u $line)" "
done

# sshpass でファイルを転送
sshpass -f passfile scp -o StrictHostKeyChecking=no ${upfiles} ${USERNAME}@${SERVERHOST}:${SERVERPATH}

実行(一応)

cd /mnt/c/test/
./transport.sh

次はファイル別にサーバーのフォルダ指定するやつを作りたい