複数のリモートマシンでローカル bash スクリプトを実行する

複数のリモートマシンでローカル bash スクリプトを実行する

以下の bash スクリプトがあり、ユーザーを作成するたびに、このスクリプトをサーバーにコピーして実行する必要があります。

このスクリプトが hosts.txt ファイル (複数のサーバーでスクリプトを実行) から IP を 1 つずつ取得し、サーバー上にユーザーを作成するようにするには、何か方法がありますか。また、このスクリプトを実行するには、root である必要があります。

1. パスワードを一度尋ね、スクリプトの残りの部分で必要に応じてそれを使用します。 2. 通常のユーザーとしてログインします。 3. ルートユーザーになり、スクリプトを実行します。

#!/bin/bash

#Script to Add User

read -p 'Please Enter The Username To Add: ' name
echo "$name" > /tmp/userlist.txt
clear
echo -e "Hallo $name\nYour Name Is Added To The List."
userfile=/tmp/userlist.txt
username=$(cat /tmp/userlist.txt | tr 'A-Z' 'a-z')
for user in $username
do
useradd $user -N -s /bin/bash
usermod -aG sudo $user
passwd $user
done
echo "=================================="

echo "User $name Have Been Created."

echo "=================================="
tail /etc/passwd | cut -d: -f1

答え1

スクリプトをコピーして集中管理ポイントから実行したい場合は、コピーと実行を担当する一般的なプロビジョニングスクリプトを作成します。

  1. 配列リストを作成します。この場合はhostList.activeというファイルを使用しました。

  2. リモート サーバーにコピーして実行しようとしているスクリプトを唯一の引数として設定します。(この場合、リモート マシンのホーム ディレクトリで実行されます)

    #! /bin/bash
    while read box; do
      ping -c 1 -w 1 -q $box > /dev/null
      if (test $? = 0); then
          echo "***************************************************************"
          echo $box
          scp $1 $box:~/.
          ssh -n -o stricthostkeychecking=no -X $box "~/$1"
       else echo $box is not responding to ping
           echo $box >> hostList.notdone
       fi
    done < hostList.active
    

配列リスト ファイル (hostList.active) に 2 つのテスト サーバーを配置し、両方に接続してスクリプトをコピーし、実行しました。

   ./copyandrun.sh bogus.sh

   ***************************************************************
    tsweb
    bogus.sh                                                            100%   36     0.0KB/s   00:00    
    Running a Test
    ***************************************************************
    tsdb
    bogus.sh                                                            100%   36     0.0KB/s   00:00    
    Running a Test

コピーするスクリプトに、コピー元のユーザーが実行できる適切な権限があることを確認してください。

関連情報