Esegui script bash locale su più macchine remote
Ho sotto lo script bash, ogni volta che voglio creare un utente devo copiare questo script sul server ed eseguirlo.
C'è qualcosa che possiamo fare in modo che questo script prenda gli IP da un file hosts.txt (script in esecuzione su più server) uno per uno e crei l'utente sul server. Inoltre, dobbiamo essere root per eseguire questo script.
1.Chiedi la password una volta e usala nello script per il resto dello script dove necessario. 2.login come utente normale. 3.Diventa un utente root ed esegui lo 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
Risposte
Se desideri copiare lo script ed eseguirlo da un punto centralizzato, crea uno script di provisioning generale incaricato di copiare ed eseguire
Crea un elenco di array, in questo caso ho usato un file chiamato hostList.active
Imposta l'unico argomento in modo che sia lo script che stai cercando di copiare ed eseguire sul server remoto. (In questo caso verrà eseguito nella home directory delle macchine remote)
#! /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
Ho inserito 2 server di test nel mio file di elenco di array (hostList.active) e si è connesso a entrambi, ho copiato lo script ed eseguito.
./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
Assicurati che lo script su cui stai copiando abbia le autorizzazioni appropriate per poter essere eseguito da qualsiasi utente con cui lo stai copiando.