Grave um script para criar usuários com senhas pré-definidas

1

Eu preciso de um script simples.

Um arquivo chamado userID consiste em 10 unixID e outro arquivo com nome passwd consiste em 10 senha para esses 10 unixID no arquivo userID . A primeira palavra de cada arquivo representa unixID e o passwd correspondente para esse unixID.

Eu acho que seria necessário executar dois para loop ou algo para atribuir senha para esse userID específico

Alguém tem alguma sugestão?

    
por Venom 06.08.2013 / 00:51

2 respostas

2

Você pode usar os descritores de arquivo para ler a entrada dos dois arquivos em um execução de loop único enquanto. Aqui está um exemplo:

#!/bin/bash

# Assign file descriptors to users and passwords files
exec 3< users.txt
exec 4< passwords.txt

# Read user and password
while read iuser <&3 && read ipasswd <&4 ; do
    # Just print this for debugging
    printf "\tCreating user: %s with password: %s\n" $iuser $ipasswd
    # Create the user with adduser (you can add whichever option you like)
    adduser $iuser
    # Assign the password to the user, passwd must read it from stdin
    echo $ipasswd | passwd --stdin $iuser
done

Observe como passwd é solicitado a ler a senha de stdin . Você pode precisar adicionar muitas verificações de sanidade para o código acima, como verificar se existem arquivos, nomes de usuário não têm espaços, o usuário ainda não existe no sistema, etc ... Você também pode estender o script para aceitar ambos os nomes de arquivos como argumentos de entrada.

Esta resposta no estouro de pilha foi muito útil.

    
por 06.08.2013 / 02:33
0

Bem, se eu fosse você, criaria apenas um csv de unixID, senha e

 while IFS=',' read -ra VARARRAY; do
     #The userid would be $VARARRAY[0] and passwd would be $VARARRAY[1]
     #Create user with distro's preferred method here.
 done

Para executá-lo e mantê-lo dinâmico, eu

 cat newusers | ./createNewUsers.sh

Depois você pode

 rm newusers

para que as senhas não sejam demoradas.

stackoverflow ajudou um bit para criação de código.

    
por 06.08.2013 / 01:07