Exécuter le script bash local sur plusieurs ordinateurs distants
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
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
Créez une liste de tableaux, dans ce cas, j'ai utilisé un fichier appelé hostList.active
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.