shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: script para criar usuario


From: marcelo
Subject: Re: script para criar usuario
Date: Mon, 24 Oct 2005 17:34:31 -0200 (BRDT)
User-agent: SquirrelMail/1.4.5

> Existem 20 mensagens sobre este tópico.
Cara,

Eu uso muito o shell via CGI para acionamento remoto nos servidores
veja o que eu utilizo num free-bsd.

Pagina CGI com acesso via brouze:

Os arquivos ./formato/topo e ./formato/base são arquivos com a base de
extrutura da pagina em html.

###################################################################
#! /bin/sh

# disable filename globbing
set -f

#echo Content-type: text/plain
echo -e "Content-type: text/html \n\n"


RESPOSTA=`echo "${QUERY_STRING}" | sed
's/\(RESPOSTA=\)\(.*\)\(\&USUARIO=.*\)/\2/;s/%40/@/g'`

USUARIO=`echo "${QUERY_STRING}" | sed
's/\(.*&USUARIO=\)\(.*\)\(\&DOMINIO=.*\)/\2/;s/+/_/g' | tr [A-Z]
[a-z]`

DOMINIO=`echo "${QUERY_STRING}" | sed 's/.*&DOMINIO=//'`

# Inicialização do HTML
cat ./formato/topo

echo "<h1 align=center><font color=#ff0000>Inclusão de
e-mail's</font></h1>"

if [ \( "$DOMINIO" \) -a \( "$USUARIO" \) -a \( "$RESPOSTA" \) ]
then
TESTE=`grep "${USUARIO}@${DOMINIO}" /etc/mail/virtusertable`
if [ "$TESTE" ]
then
echo "<p align=center style=\"margin-bottom: 0cm\">
<font color=#ff0000>
E-Mail ja cadastrado no sistema
utilize a tecla voltar do seu navegador para informar outro
</font></p><br>"
else
echo "
<p align=center style=\"margin-bottom: 0cm\"><font color=#0000ff>
A solicitção de inclusão do e-mail
<font color=#ff0000>${USUARIO}@${DOMINIO}</font>
foi realizada com sucesso
</font></p><br>"
printf "${RESPOSTA}:${USUARIO}:${DOMINIO}" > ./fifos/novoemail
fi
elif [ \( "$DOMINIO" \) -a \( "$USUARIO" \) -a \( ! "$RESPOSTA" \) ]
then
echo "<p align=center style=\"margin-bottom: 0cm\">
<font color=#ff0000>
Você não informou o e-mail de resposta para o cadastro de e-mail !!!
</font></p><br>"
elif [ \( "$DOMINIO" \) -a \( ! "$URUARIO" \) ]
then
echo "
<form name=dados method=get action=\"novoemail.cgi\">
<table border=0 cellpadding=4 cellspacing=2 width=600 bgcolor=#000000
align=center>
<tbody>
<tr>
<td align=left valign=top width=40% bgcolor=#ffffff>
<font color=#ff0000>E-mail de Resposta :</font>
</td>
<td width=60% bgcolor=#f6f6f6 align=left>
<input class=input type=text maxlength=50 size=50 name=RESPOSTA
onkeypress=\"ChecarTAB()\" onkeyup=\"Mostra(this, 50)\"
onfocus=\"PararTAB(this)\">
</td>
</tr>
<tr>
<td align=left valign=top width=40% bgcolor=#ffffff>
<font color=#ff0000>Login do E-mail :</font>
</td>
<td width=60% bgcolor=#f6f6f6 align=left>
<input class=input type=text maxlength=20 size=20 name=USUARIO
onkeypress=\"ChecarTAB()\" onkeyup=\"Mostra(this, 20)\"
onfocus=\"PararTAB(this)\"><font
color=#0000ff><b>@${DOMINIO}</b></font>
</td>
</tr>
<tr>
<td colspan=2 align=center bgcolor=#ffffff>
<input class=input type=submit value=Confirmar>
<input type=hidden name=DOMINIO value=\"${DOMINIO}\">
<input class=input type=reset value=Limpar>
</td>
</tr>
<tr>
<td colspan=2 align=center bgcolor=#ffffff>
<font color=#0000ff>O dominio <font
color=#ff0000><b>${DOMINIO}</b></font> tem <font color=#ff0000><b>`awk
'!/(^[@#]|^$)/ {print $0}' /etc/mail/dominios/${DOMINIO} | wc -l`
email(s)</b></font> cadastrado(s) em nossos servidores !</font>
</td>
</tr>"
sort /etc/mail/dominios/${DOMINIO} | awk '!/(^[@#]|^$)/ {print
"\n\t\t<tr>\n\t\t\t<td colspan=2 align=left
bgcolor=#ffffff>\n\t\t\t<font
color=#0000ff><b>"$1"</b></font>\n\t\t\t</td>\n\t\t</tr>"}'
echo "
</tbody>
</table>
</form><br>"
else
echo "
<table border=0 cellpadding=4 cellspacing=2 width=600 bgcolor=#000000
align=center>
<tbody>
<tr>
<td align=left valign=top width=90% bgcolor=#ffffff>
<font color=#ff0000>Domínios :</font>
</td>
<td width=10% bgcolor=#f6f6f6 align=center>
<font color=#ff0000>T.E.C.</font>
</td>
</tr>"
for DOMINIO in `ls /etc/mail/dominios/`
do
echo "
<tr>
<td align=left valign=top width=90% bgcolor=#ffffff>
<b>
<a href=./novoemail.cgi?RESPOSTA=&USUARIO=&DOMINIO=${DOMINIO}>
${DOMINIO}</a></b>
</td>
<td width=10% bgcolor=#f6f6f6 align=right>
<font color=#0000ff>
`awk '!/(^[@#]|^$)/ {print $0}' /etc/mail/dominios/${DOMINIO} | wc -l`
</font>
</td>
</tr>"
done
echo "
</tbody>
</table>
</form><br>"
fi

# Finalização do HTML
cat ./formato/base
###################################################################

A saida desta pagina é jogada para um arquivo fifo (./fifos/novoemail)
pois o usuário www-data não tem direitos de manipulação no sistema,
para tento tenho um outro script rodando sob uruário root com loop
infinito, veja o código abaixo:

###################################################################
#! /bin/sh

while true
do
CLIENTE=`cat /usr/local/httpd/cgi-bin/intrawave/fifos/novoemail`
RESPOSTA=`echo "$CLIENTE" | cut -f1 -d:`
USUARIO=`echo "$CLIENTE" | cut -f2 -d:`
DOMINIO=`echo "$CLIENTE" | cut -f3 -d:`

# Verifica se foi informado os parametros
[ \( ! "$USUARIO" \) -o \( ! "$DOMINIO" \) ] && continue

# Testa de cominio esta cadastrado
TESTE=`grep "^\@$DOMINIO" /etc/mail/virtusertable`
[ ! "$TESTE" ] && continue

# Testa de email ja existentes
TESTE=`grep "${USUARIO}@${DOMINIO}" /etc/mail/virtusertable`
[ "$TESTE" ] && continue

# Nome da empresa pelo dominio
EMPRESA=`echo "$DOMINIO" | cut -f1 -d"."`

# Insere novo cadastro no dominio
printf "\n${USUARIO}@${DOMINIO}\t\t${EMPRESA}.${USUARIO}\n" >>
/etc/mail/dominios/$DOMINIO

# Cria virtusertable temporario
for DM in `ls /etc/mail/dominios/`
do
printf "# ${DM}\n############################\n\n" >> /tmp/virtusertable
sort -u /etc/mail/dominios/${DM} >> /tmp/virtusertable
printf "################################\n\n" >>  /tmp/virtusertable
done

# Verifica data
DATA=`date "+%Y%m%d"`

# Faz backup de virtusertable com extensao .DATA.BAK
mv /etc/mail/virtusertable /etc/mail/virtusertable.${DATA}.bak

# Move virtusertable /tmp para /etc/mail
mv /tmp/virtusertable /etc/mail/

# Entra no diretorio /etc/mail
cd /etc/mail

# Indexa virtusertable ao DB
makemap hash virtusertable.db < virtusertable

# Volta ao diretorio de origem
cd -

# Cria novo usuario no sistema
printf "%5s\n%5s\n\n\n\n\n\n\n\n\n\n%5s\n%5s\n\n%3s\n%2s\n"
"${EMPRESA}.$USUARIO" "$USUARIO" "12345" "12345" "yes" "no" | adduser
1> /dev/null

# Envia um e-mail de aviso para o cliente e o suporte
mail -s "Res: Nova Conta ( ${USUARIO}@${DOMINIO} )"
"${RESPOSTA}","address@hidden" -r address@hidden<<fim

CORPO DO E-MAIL

fim
sleep 2
done
###################################################################

Após criar a conta ele vai gerar um e-mail avisando ao suporte e ao
cliente.

Agora teste pois o uso é em Free-bsd, veja a extrutura de criação e
altere para a do slack.

Abraços.

Marcelo G. Dias

>
Mensagem: 2
     Data: Thu, 20 Oct 2005 09:45:33 -0200
       De: Luiz Henrique <address@hidden>
  Assunto: Re: script para criar usuario

Aqui no slackware não rolou :-(


Gustavo Picoloto escreveu:

>Olá,
>
>tente:
>
>echo $senha | passwd $user --stdin
>
>
>[]'s
>
>Gustavo Picoloto
>
>Em 19/10/05, Luiz Henrique<address@hidden> escreveu:
>
>
>>Como ficaria um script para se criar usuario e senha no linux
através de
>>um arquivo
>>usando os comandos adduser e passwd
>>
>>
>>for i in `cat usuarios.txt` ; do
>>user=$(awk -F ","  '{print $1 }' $i)
>>senha=$(awk -F ","  '{print $2 }' $i)
>>
>>adduser $user
>>passwd  ??
>>
>>
>>done
>>
>>arquivo usuarios.txt
>>
>>
>>usuario,senha
>>quick,123
>>teste1,234
>>teste2,345
>>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]