1つのLinuxホストから複数のサーバーにファイルをバッチコピーします

  運用および保守中に、ファイルを複数のLinuxサーバーにバッチでコピーする必要がある場合があります。手動で1つずつコピーすると、効率が比較的低くなります。運用と保守の効率を向上させるために、スクリプトを使用して1つのLinuxホストから複数のサーバーにファイルをバッチでコピーできます。実装手順は次のとおりです。

1つは、Linuxホスト設定sshパスワードなしのログイン

  まず、LinuxホストをSSHパスワードなしでログインできるように設定する必要があります。そのうちの1つを信頼できるホストとして使用して、パスワードなしで他のすべてのホストにログインできます。具体的な構成方法については、「信頼関係の構成」を参照してください。2つのLinuxホスト間(およびキャンセル方法) "。

2つ目は、ホストリストファイルhostsを作成する

  vi hostsコマンドは、ホストリストファイルhostsを作成し、ファイル内のすべてのリモートホストを一覧表示します。

$ vi hosts

$ cat hosts 
101.132.242.27
47.103.217.188

3つ目は、スクリプトファイルremotecopy.shを作成することです。

#!/bin/bash
while getopts f: OPT;
do
    case $OPT in
        f|+f)
            files="$OPTARG $files"
            ;;
        *)
            echo "usage: `basename $0` [-f hostfile] <from> <to>"
            exit 2
    esac
done
shift `expr $OPTIND - 1`
 
if [ "" = "$files" ];
then
    echo "usage: `basename $0` [-f hostfile] <from> <to>"
    exit
fi
 
for file in $files
do
    if [ ! -f "$file" ];
    then
        echo "no hostlist file:$file"
        exit
fi
hosts="$hosts `cat $file`"
done
 
for host in $hosts;
do
    echo "scp $1 $2@$host:$3"
    scp $1 $2@$host:$3
done

第4に、スクリプトファイルremotecopy.shに実行権限を追加します

$ chmod u+x remotecopy.sh

5.信頼できるホストでスクリプトコマンドを実行します

  スクリプト実行コマンドの形式は次のとおりです。

 ./remotecopy.sh -f hosts [yourfile] [username] [remotepath] 

  注:パラメーター1 [yourfile]は信頼できるホストにコピーされるファイル、パラメーター2 [username]はログインユーザー、パラメーター3 [remotepath]はリモートホストのファイルパスです。

  例は次のとおりです。

$ ./remotecopy.sh -f hosts test.log testuser /home/testuser/

  現在のパスにあるtest.logファイルを他のホストの/ home / testuser /ディレクトリにバッチでコピーして、シークレットログインユーザーtestuserを回避できます。

  フォルダをバッチでコピーする必要がある場合は、remotecopy.shファイルのscpコマンドを変更するだけです。

記事のリファレンス:1台のLinuxマシンから複数のLinuxマシンにファイルをコピーする方法

おすすめ

転載: blog.csdn.net/piaoranyuji/article/details/109772375