#  > Desenvolvimento >  > Linguagens de Programação >  >  script para criar usuario!

## Luis Henrique

Ola pessoal,

Eu tenho um arquivo com varios nomes de usuarios e gostaria de fazer um script para usar estes nomes para criar os usuarios!

Este arquivo tem em cada linha apenas um nome de usuario!

Eu gostaria que o comando "adduser" interpretasse uma linha por vez!

criando usuario por usuario!

Como eu fasso isso!!

Atenciosamente,

Henrique
Desde ja agradeco pela atencao!

----------


## Sukkubus

Luis Henrique, quando tiver alguma dúvida, especifique o fórum por assunto e poste uma vez só, que é bem mais fácil de você obter a resposta, ok?  :Smile:

----------


## waa

Bom primeiro tem que estuda como funciona o comando "adduser" depois qual a forma mais facil de fazer iso usando um shell pode comecar por estes links ai em baxo:

http://sh.under-linux.org/
http://aurelio.net/

----------


## aguizo

dá uma olhada neste aqui e veja se ajuda... abraçu

#!/bin/bash

######################################################################
# #
# Script Feito por Eduardo Assis #
# email: [email protected] #
# #
# Esse Script tem por objetivo facilitar a nossa vida de #
# Administrador de Redes Linux, Bastando colocar em GRUPO #
# o seu grupo de trabalho para cadastrar os usuarios #
# Esse Script vai fazer com que vc cadastre os usuarios no #
# sistema e no samba. #
# Aconselho criar um usuario para executar esse script #
# e dar direitos para esse usuario de root alterando o #
# /etc/passwd, e colocando no .bashrc dele para executar #
# o ./samba.sg quando ele se logar e depois da chamada #
# do ./samba.sh colocar o logout para que quando ele #
# sair do script ele seja deslogado #
# #
#####################################################################

# aqui eu desabilitei as teclas CTRL+C Caso Seja apertada para ele ter acesso ao Linux 

trap "" 1 2 3 15 

# Aqui o Grupo de Trabalho de Sua Empresa | Não esqueça de criar o grupo de trabalho antes ( groupadd nome_do_grupo )

$grupo='grupo_de_trabalho'

clear
while
true
do
clear
echo " Cadastro de Usuários no Linux e no Samba (PDC) "
echo " By"
echo " Eduardo Assis "
echo " email: [email protected]"
echo
echo
echo " Escolha uma das Opções Abaixo: "
echo
echo -e "\e[0;32m"""
echo " [1] Cadastro de Usuário "
echo " [2] Deletar Usuário "
echo " [3] Sair "
echo
echo -e "\e[0;37m"""
echo -n " Favor Digitar a Opção Desejada: "
read opcao
case $opcao in
1)
clear
echo " Cadastro de Usuários no Linux e no Samba (PDC) "
echo " By"
echo " Eduardo Assis "
echo " email: [email protected]"
echo
echo
echo -e "\e[0;32m"""
echo -n "Digite o Nome do Usuário para Cadastro: "
echo
echo -e "\e[0;37m"""
read nome
adduser $nome
passwd $nome
chown $nome.$grupo /home/$nome
smbadduser $nome:$grupo
echo -e "\e[0;32m"""
echo -n "Cadastro Efetuado com Sucesso !!!, Aperte qualquer tecla para continuar ... "
echo -e "\e[0;37m"""
echo
read
;;
2)
clear
echo " Cadastro de Usuários no Linux e no Samba (PDC) "
echo " By"
echo " Eduardo Assis "
echo " email: [email protected]"
echo
echo
 echo -e "\e[0;32m"""
echo -n "Digite o Nome do Usuário para ser Deletado: "
echo
echo -n "Aviso todos os dados da pasta pessoal do Usuário será Deletado "
echo
echo -e "\e[0;37m"""
read deletado
userdel $deletado
rm -rf /home/$deletado
sed "/$deletado/d" /etc/smbpasswd >> /etc/smbpasswdold
rm -rf /etc/smbpasswd
mv /etc/smbpasswdold /etc/smbpasswd
echo -e "\e[0;32m"""
echo -n "Usuário Deletado com Sucesso !!!, Aperte qualquer tecla para continuar ... "
echo -e "\e[0;37m"""
echo
read
;;
3)
clear
exit
;;

esac
done

----------


## Benzatti

Esse script vai criar tds os usuarios com os nomes no ARQUIVO.

#!/bin/bash
for a in `cat ARQUIVO` ; do
adduser $a 2> /dev/null
done


[ ]' s

----------


## Luis Henrique

Obrigado Benzati por sua atencao!

Eu tentei criar um script similar a esse que vc me mandou mas o problema no comando "cat" no arquivo ele cria apenas o primeiro usuario e os outros naum. Por que tem um nome por linha! assim ele interpreta apenas o primeiro e termina o processo!

Eu precisava de algum comando que fizesse um LOOP pegando linha por linha e criando usuario por usuario!

Atenciosamente,

Henrique

Agradeco pela atencao de todos!

----------


## Benzatti

Olá,

Pode ser que esteja ocorrendo algum problema entao, pois o comando cat entre crases, dentro do for, pega todas as linhas, uma a uma, conforme vc necessita. Alem disso, é o modo mais simples de resolver.

Em todo caso, temos outras opções:

#!/bin/bash
#conta o numero de usuarios que tem no arquivo, pode ser gravado a mao mesmo
linhas=`echo ARQUIVO | wc -l` 
var=1
while [$var -le $linhas] ; do
usuario=`sed -n "$var"p ARQUIVO`
adduser $usuario 2> /dev/null
var=$(($var + 1))
done 

Espero ter ajudado

[ ] 's

----------


## Luis Henrique

Benzzati,

Ok !

Deu certo sim !

muito OBRIGADO!

atenciosamente,

Henrique

Agradeco pela atencao de todos!

----------

