Ejecute el script bash local en varias máquinas remotas

Sep 02 2020

Tengo el siguiente script bash, cada vez que quiero crear un usuario, necesito copiar este script al servidor y ejecutarlo.

¿Hay algo que podamos hacer para que este script obtenga las IP de un archivo hosts.txt (ejecutando un script en varios servidores) uno por uno y cree un usuario en el servidor? Además, necesitamos ser root para ejecutar este script.

1.Pida la contraseña una vez y úsela en el script para el resto del script cuando sea necesario. 2.Inicie sesión como usuario normal. 3.conviértase en un usuario root y ejecute el 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

Respuestas

1 Petey_Woof Sep 05 2020 at 22:39

Si desea copiar el script y ejecutarlo desde un punto centralizado, cree un script de aprovisionamiento general encargado de copiar y ejecutar

  1. Cree una lista de matrices, en este caso usé un archivo llamado hostList.active

  2. Establezca que el único argumento sea el script que está intentando copiar y ejecutar en el servidor remoto. (En este caso, se ejecutará en el directorio de inicio de las máquinas remotas)

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

Coloqué 2 servidores de prueba en mi archivo de lista de matrices (hostList.active) y se conectó a ambos, copié el script y lo ejecuté.

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

Asegúrese de que el script que está copiando tenga los permisos adecuados para que pueda ser ejecutado por cualquier usuario con el que lo esté copiando.