WSLでsshpassを使ってscpファイル送信②
3807 ワード
初めに
WSL(Ubuntu)で、シェルを実行したら、パスに記載しているファイルを指定サーバー上の指定フォルダに転送する。
今回はパス毎で転送先を指定できるような形式
どこまでファイルにして、どこまで実行ファイルに書くかはお好みで
2020/10/7 修正
実行(確認)環境
WSL2
Ubuntu 18.04
CentOS7(格納先)
フォルダ構成
# 実行フォルダ(どこでも大丈夫なハズ)
c:\test\
├ transport.sh
├ filepath(パスを記載)
└ passfile(パスワードを記載)
# 転送ファイル群
c:\temp\
├ test1.txt
├ test2.txt
└ test3.txt
ソース
設定ファイル系
filepath
C:/temp/test1.txt,/root/temp1
C:/temp/test2.txt,/root/temp2
C:/temp/test3.txt,/root/temp3
※改行はLFで
passfile
hogehoge
※1行で記載する必要あり
シェルスクリプト
transport.sh
#!/bin/bash
# sshのユーザー名
USERNAME="root"
# サーバーのホスト
SERVERHOST="XXX.XXX.XXX.XXX"
# ファイルパスをループ
for line in `cat filepath`
do
# 分割
arr=(${line//,/ })
# ローカルファイルパス変換
upfiles=$(wslpath -u ${arr[0]})
# サーバーパス
serverpath=${arr[1]}
# 送信情報をセット
transports=$transports" ${upfiles} ${USERNAME}@${SERVERHOST}:${serverpath}"
done
# 送信
sshpass -f passfile scp -o StrictHostKeyChecking=no $transports
実行(一応)
cd /mnt/c/test/
./transport.sh
cd /mnt/c/test/
./transport.sh
bin/shでの配列操作が分からなくて、bin/bashに変更、、
ていうか、違いなんて知らなかった、、
まぁ、実用性は遅すぎてほぼ0です、、
1つのsshpassに指定できるので、実用性はだいぶ上がるはず
Author And Source
この問題について(WSLでsshpassを使ってscpファイル送信②), 我々は、より多くの情報をここで見つけました https://qiita.com/naozo-se/items/09255b9d92feea7979e1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .