Esegui script bash locale su più macchine remote

Sep 02 2020

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

1 Petey_Woof Sep 05 2020 at 22:39

Se desideri copiare lo script ed eseguirlo da un punto centralizzato, crea uno script di provisioning generale incaricato di copiare ed eseguire

  1. Crea un elenco di array, in questo caso ho usato un file chiamato hostList.active

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