Pular para o conteúdo

Criando usuários a partir de uma lista

Dica publicada em Shell Script / Expressões Regulares
Jorge Luiz Olimpia jorgeolimpia
Hits: 13.442 Categoria: Shell Script Subcategoria: Expressões Regulares
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Criando usuários a partir de uma lista

Se você tem uma lista para criar usuários, com senha igual ao nome do usuário, proceda da seguinte maneira:
  • crie um arquivo chamado usuario, contendo os nomes dos usuários
  • crie um arquivo chamado criauser e digite as seguintes linhas:


O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
#!/bin/sh

for i in $(awk ´{print $1}´ usuario)  
do
    useradd $i
    grep $i usuarios | awk ´{print $1}´| passwd --stdin $i
done

Dê a permissão para executar este arquivo com o comando CHMOD e execute o comando:

# ./criauser

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Configurando um servidor X

Como fazer "quit" no SED

Sed - como salvar alterações no arquivo

SED - combinando o conteúdo de dois arquivos

Múltiplas expressões no SED

sed - Eliminando linhas em branco

#1 Comentário enviado por ximex em 20/03/2003 - 10:53h
Nao estou conseguindo da sempre um erro diferente, acho que nao estou sabem disponibilizar as linhas dentro do aquivo ex:
#!/bin/shfor
i in $(awk ´{print $1}´ usuario)
do useradd $i
grep $i usuarios|awk ´{print $1}´|passwd --stdin $i
done
colquei deste jeito sera qu esta certo.

Garto Ximex
#2 Comentário enviado por cesarcardoso em 28/04/2003 - 13:10h
O correto seria

#!/bin/sh
for i in $(awk ´{print $1}´ usuario)
do useradd $i
grep $i usuarios|awk ´{print $1}´|passwd --stdin $i
done

O script dá erro porque /bin/shfor não existe :)
#3 Comentário enviado por fabio em 28/04/2003 - 14:19h
Olá,

Foi erro meu na hora de publicar a dica, corrigi as tags html, agora tá certo :)
#4 Comentário enviado por emanuelbrunopb em 05/06/2003 - 08:38h
Muito bom este script irei anotalo no meu caderno.
Valeu cara
BrunoPB
#5 Comentário enviado por rsouza em 28/08/2003 - 12:25h
Valeu pela dica, eu tinha uma lista com 100 user para criar.....

Agora posso ir para casa. hehhehehehhehe
#6 Comentário enviado por guardiangu em 14/07/2004 - 16:21h
Como posso fazer um menu no Shell para cadastro de usuários, mas só o root pode confirmar o cadastro do novo usuário?
#7 Comentário enviado por Raphael_ADB em 11/08/2004 - 11:00h
Se por acaso eu quiser criar vários usuários, porem com a senha de cada um diferente do nome do usuário...será que tem como???
Alguem ai tem o script pronto?

Valeu.
#8 Comentário enviado por regispadua em 18/02/2005 - 16:38h
Muito bom...Está dentro dos meus scripts de uso diário.
#9 Comentário enviado por bobrezende em 21/03/2006 - 11:48h
No Slackware não há a opção --stdin no comando passwd.
#10 Comentário enviado por thudojorge em 13/06/2008 - 09:12h
Alo!
seis anos depois desta dica tb deparei-me com o problema de ter uma lista de usarios e decidi escrever um script, mas o meu problema eh o mesmo que o do bobrezende . Ou seja o comando passwd nao tem essa opcao --stdin.

Alguem tem alguma outra dica?

Bom esse eh o script que tou escrevendo


#!/bin/bash
seg=$1
tipo=`file $seg 2> ERROS.txt |awk '{print $3}'`

if [ "$tipo" = "text" ];then
for nome in `cat $seg`;do
groupadd $nome 2>err_add
erro=`cat err_add`
if [ "$erro" = "" ]; then
useradd -g $nome -s/bin/bash -d/home/$nome -m -p"$nome" $nome
echo "Adicionado: $nome">> ADICIONADOS.txt
else
while [ true ]; do
let usuario+=1
echo "usuario: $nome exite, adicionando usuario
$nome$usuario">> ALTERADOS.txt
groupadd "$nome$usuario" 2>err_add
erro=`cat err_add`
if [ "$erro" = "" ]; then
useradd -g "$nome$usuario" -s/bin/bash -d/home/"$nome$usuario" -m -p"$nome" "$nome$usuario"
echo "Adicionado: $nome$usuario">> ADICIONADOS.txt
break
fi
done
fi
done


else

Contribuir com comentário

Entre na sua conta para comentar.