modo rapido per adduser e userdel in più macchine

Attualmente vado a ciascuno dei nostri server per digitare

adduser <username> --firstuid 1101 --gid 1001 --disabled-password

per aggiungere un utente. C'è un modo più veloce per farlo su tutti i server contemporaneamente? Grazie.

AGGIORNARE:

Dopo aver eseguito il command precedente, è necessario compilare alcune informazioni utente: "Nome completo:", "Numero di stanza", "Telefono di lavoro" ecc. Vorrei solo compilare queste informazioni una sola volta e essere utilizzata per l'utente creazione su tutte le macchine. Grazie.

AGGIORNARE

Non sono sicuro se è necessario aggiungere gli stessi utenti a ciascun server o se each server ha un proprio utente. Vi darò una soluzione per entrambe le situazioni.

Aggiunta di un elenco di utenti a ciascun server

Lo strumento migliore per questo lavoro è newusers . Sarà necessario creare un file di text contenente l'elenco degli utenti e dei loro dettagli. Se si desidera aggiungere lo stesso utente a ciascun server, questo file richiederà solo una row.

  1. Crea l'elenco degli utenti. Il formato generale del file è

     username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell 

    Quindi, nel tuo caso, dovresti usare qualcosa di simile

     tom:password1:::"Tom Hanks","101","123456","654321","Tall":: danny:password2:::"Danny DeVito","102","222333","333222","Short":: 

    Notare che ho lasciato vuoto le voci UID, GUID, directory e shell. Ciò significa che verranno utilizzati valori predefiniti.

  2. Ora che hai creato l'elenco, dovrai copiarlo a each macchina remota e quindi aggiungere i nuovi utenti. Per questo, avrai ancora bisogno di un elenco di nomi host o IP pertinenti, uno per row, come nel mio suggerimento precedente. Dopo aver impostato tutto questo, salva questo piccolo script come newusers.sh :

     #!/bin/bash while read ip; do scp users.txt [email protected]$ip:/home/root ssh [email protected]$ip newusers users.txt done 
  3. Effettuare lo script eseguibile ( chmod a+x newusers.sh ) e eseguirlo per each IP nel file:

     newusers.sh < IPs.txt 
  4. Tutto questo sarà molto più facile se hai impostato ssh senza password. Se non lo si desidera, eseguire i seguenti comandi per utilizzare i tasti ssh che consentono l'accesso a password (richiede ancora una passphrase):

     ssh-keygen -t rsa while read ip; do ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]$ip; done < IPs.txt 

Aggiunta di un utente diverso a ciascun server

In questo caso, creerei un file leggermente diverso. Dovrebbe avere un IP o un hostname, il suo utente corrispondente ei dettagli necessari per crearla su ciascuna row. Supponendo che si desideri impostare le password, è ansible avere il text normale (ovviamente alcune preoccupazioni di sicurezza qui, non sapere se sono rilevanti nel tuo caso) come quarto field. Inoltre, per analizzare correttamente i nomi con gli spazi, accertati di utilizzare un charcater non spazio come separatore di field . Nell'esempio riportto di seguito, sto utilizzando:

 192.168.1.10-tom-"Tom Hanks","101","123456","654321","Tall"-pass1 192.168.1.10-danny-"Danny DeVito","102","222333","333222","Short"-pass2 

Ora passare attraverso il file e creare ciascun utente sulla corrispondente macchina. Assicurarsi di impostare l' IFS variabe nel separatore di field per analizzare correttamente gli spazi:

 while IFS='-' read ip name opts pass; do \ ssh [email protected]$ip useradd $name -mc $opts -p `openssl passwd $pass` -s /bin/bash \ done < list.txt 

Perché non utilizzare un database utente centralizzato, come LDAP (OpenLDAP o meglio 389 Directory Server )?