Oi Pessoal,
Vendo a necessidade de alguns colegas de desenvolver um script para cadastro
de usu�rios no sistema, resolvi enviar este que foi alterado por mim para
atender as minhas necessidades. Trata-se de um script em PERL que cadastra
os usu�rios j� com uma senha, que pode ser gerada aleat�riamente ou pode ser
informada pelo usu�rio.
Espero estar ajudando.
Abra�os,
Roberth.
*** SCRIPT ***
#!/usr/bin/perl
############################################################################
###
# Script..: cadsenha
#
# Objetivo: Cadastrar usuarios no sistema
#
############################################################################
###
# Desenvolvido por: Autor Desconhecido
#
# Data de Desenvolvimento: Desconhecida
#
# Adaptado por....: Roberth Oliveira Corgosinho
#
# Veronica Vieira de Carvalho
#
############################################################################
###
# Licensa de uso: GPL
#
############################################################################
###
# Ultima Alteracao: 10/10/2002
#
# Alterado por....: Roberth Oliveira Corgosinho
#
# Motivo da Alteracao:
#
# Adaptacao para as necessidades da FUOM
#
############################################################################
###
# Versao Atual: 2.2.1-ROC
#
############################################################################
###
#
# Declaracao das variaveis globais
#
$versao = "2.2.1-ROC"; # Versao atual do script
$conf = "s"; # Variavel de confirmacao: N -> encerra o script
# S -> cadastra outro user
$confpass= "a"; # Variavel de confirmacao: A -> gera senha
automatica
# M -> senha manual
$usuario = ""; # Usuario a ser cadastrado
$senha = ""; # Senha do usuario a ser cadastrado
$nome = ""; # Nome do usuario ou Comentario sobre o mesmo
############################################################################
###
# Programa Principal
#
############################################################################
###
while (uc($conf) ne "N") {
#
# Obtem os dados para o cadastro
#
system("clear");
¢raliza("Cadastro de Usuario - Versao: $versao");
¢raliza("Desenvolvido por: Roberth e Veronica");
USUARIO:print "\nUsuario: ";
$usuario = <STDIN>;
chop($usuario);
$usuario =~ s/\s//g;
if ($usuario eq '') {
print "!!! ERRO !!! O campo USUARIO deve ser preenchido...\n\n";
goto USUARIO;
} else {
&checauser;
}
print "Geracao de senha Manual ou Automatica (Mm/Aa)? [A] ";
$confpass = <STDIN>;
chop($confpass);
$confpass =~ s/\s//g;
if ($confpass eq '') {
$confpass = "a";
}
&gerasenha;
NOME:print "Nome ou Comentario: ";
$nome = <STDIN>;
chop($nome);
if (($nome eq ' ') || ($nome eq '')) {
print "!!! ERRO !!! O campo NOME OU COMENTARIO deve ser preenchido...\n\n";
goto NOME;
}
print "\nCADASTRANDO USUARIO... Por favor, aguarde...\n\n";
#
# Cadastra o usuario no sistema
#
system("useradd -m -p $senha -c \"$nome\" -d /home/$usuario -s /bin/bash -k
/home/$usuario $us
uario");
system("grep -w $usuario /etc/passwd");
system("chmod 700 /home/$usuario");
print "\n\nCadastro efetuado com sucesso!!!\n\n";
print "Deseja efetuar outro cadastro? (s/n) [N] ";
$conf = <STDIN>;
chop($conf);
$conf =~ s/\s//g;
if ($conf eq '') {
$conf = 'n';
}
}
############################################################################
###
# Subrotinas
#
############################################################################
###
#
# Subrotina: gerasenha
# Objetivo.: Gerar uma senha automatica ou permitir que o usuario informe
uma
# senha (senha manual)
#
sub gerasenha {
#
# Declaracao das variaveis locais
#
my $senhaok = "n"; # Confirmacao -> S = senha aceita pelo usuario
my $i = ""; # Controle de loop
# Caracteres que serao utilizados na geracao de uma senha automatica
my @c = split(/ */,"abcdefghijklmnopqrstuvwxyz0123456789@!#%&*[]}{+-");
#
# Parte principal da subrotina
#
if (uc($confpass) eq 'M') {
SENHA:print "Senha : ";
$senha = <STDIN>;
chop($senha);
if (($senha eq '') || ($senha eq ' ')) {
print "!!! ERRO !!! O campo SENHA deve ser preenchido...\n\n";
goto SENHA;
}
$senha = crypt($senha,$usuario);
} else {
while (uc($senhaok) eq "N") {
$senha = "";
srand(time);
for ($i = 0; $i < 8; $i++) {
$senha .= $c[int(rand(push(@c)))];
}
print "\nA senha para o usuario $usuario e: $senha\n";
print "Confirma a utilizacao desta senha? (s/n) [S]";
$senhaok = <STDIN>;
chop($senhaok);
$senhaok =~ s/\s//g;
if ($senhaok eq '') {
$senhaok = 's';
}
}
$senha = crypt($senha,$usuario);
}
}
#
# Subrotina: checauser
# Objetivo.: Verificar se o usuario desejado ja esta cadastrado
#
sub checauser {
my $existe = `grep -w $usuario: /etc/passwd`;
$existe =~ s/\s//g;
if ($existe) {
print "!!! ERRO !!! O usuario desejado ja esta cadastrado...\n\n";
goto USUARIO;
}
}
#
# Subrotina: centraliza
# Objetivo.: Centralizar um texto na tela
#
sub centraliza {
my $tamanho = length($_[0]);
my $espacos = ((80 - $tamanho)/2);
my $i = 0;
for ($i = 0; $i < $espacos; $i++) {
print " ";
}
print "$_[0]\n\n";
}
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.434 / Virus Database: 243 - Release Date: 25/12/2002
Assinantes em 02/01/2003: 2249
Mensagens recebidas desde 07/01/1999: 195387
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]