Exécuter le script bash local sur plusieurs ordinateurs distants

Sep 02 2020

J'ai ci-dessous le script bash, chaque fois que je veux créer un utilisateur, je dois copier ce script sur le serveur et l'exécuter.

Y a-t-il quelque chose que nous pouvons faire pour que ce script récupère les adresses IP d'un fichier hosts.txt (exécutant le script sur plusieurs serveurs) un par un et crée un utilisateur sur le serveur.En outre, nous devons être root pour exécuter ce script.

1. demandez le mot de passe une fois et utilisez-le dans le script pour le reste du script lorsque cela est nécessaire. 2. connectez-vous en tant qu'utilisateur normal. 3.devenez utilisateur root et exécutez le script

#!/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

Réponses

1 Petey_Woof Sep 05 2020 at 22:39

Si vous souhaitez copier le script et l'exécuter à partir d'un point centralisé, créez un script d'approvisionnement général en charge de la copie et de l'exécution

  1. Créez une liste de tableaux, dans ce cas, j'ai utilisé un fichier appelé hostList.active

  2. Définissez le seul argument comme étant le script que vous essayez de copier et d'exécuter sur le serveur distant. (Dans ce cas, il s'exécutera dans le répertoire de base des machines distantes)

    #! /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
    

J'ai placé 2 serveurs de test dans mon fichier de liste de tableaux (hostList.active) et il s'est connecté aux deux, copié le script et l'a exécuté.

   ./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

Assurez-vous que le script sur lequel vous copiez dispose des autorisations appropriées pour pouvoir être exécuté par n'importe quel utilisateur sous lequel vous le copiez.