Ejecute el script bash local en varias máquinas remotas

Ejecute el script bash local en varias máquinas remotas

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 el script en varios servidores) una por una y cree un usuario en el servidor? Además, debemos ser root para ejecutar este script.

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

Respuesta1

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 matriz, 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 me 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 al que esté copiando.

información relacionada