Criando usuários através de arquivo texto
Publicado por Rodrigo Ferreira Valentim 06/09/2004
[ Hits: 8.631 ]
Homepage: http://www.unitech.pro.br
Esse script tem como objetivo lêr um arquivo texto e através dele criar usuários com suas senhas criptografadas pelo crypt.
No fonte está um exemplo considerando o primeiro campo do arquivo um número de matricula, segundo o nome e terceiro o endereço. O separador entre esses campos é o ;.
Para diferenciar cada usuário, foi escolhida a matricula como usuário e o primeiro nome como senha, mas através dos comentários isso é facilmente configurável.
Para mais detalhes me mande um e-mail.
/******************************************************************************\ UniTech Projeto.....: Contribuicao para o site Viva o Linux Modulo......: popula Descricao...: Atraves de um arquivo texto, popula o cadastro de usuarios no sistema com nome e senha criptografada Autor.......: Rodrigo Ferreira Valentim Data........: 06/09/2004 Compilacao..: gcc -lcrypt -o popula popula.c Teste.......: ./popula arq \******************************************************************************/ #include <stdio.h> #include <unistd.h> #define SEPARADOR ';' void AdicionaUser( char *Nom, char *Sen) { char *p; char Sys[128]; char Salt[3]; char rndChar[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./"; // Faz uma pausa de 1 segundo para o time nao se repetir em srandom // isso devido a srandom nao ser exatamente randomico e sim baseado // em um equacao que permitiria repetir o mesmo valor se chamado em // um instante de tempo muito curto sleep(1); // Pega um numero randomico de acordo com o tempo srandom(time(0)); // Seta o salt de crypt de forma randomica // Para mais informacoes: man 3 crypt Salt[0] = rndChar[random() % 64]; Salt[1] = rndChar[random() % 64]; Salt[3] = 0; // Configuro a string que sera executada para cadastro do usuario snprintf(Sys, sizeof(Sys), "useradd u%s -p %s", Nom, crypt(Sen, Salt)); // Acompanho pela tela o nome e a senha do usuario em forma de texto // Acompanho tambem a string de execucao com a senha criptografada printf(" Nom = [%s]\n Sen = [%s]\n Sys = [%s]\n", Nom, Sen, Sys); // Executo a string de comando como se estivesse no console system(Sys); } void PopulaDados( char *Reg ) { char *p; char *pp; // p fica com a posicao do fim do primeiro registro p = strchr (Reg, SEPARADOR); // Se encontrou o fim do primeiro registro if (p) { // Separa o primeiro registro do resto com um NULL em Reg *p = 0x00; // p se posiciona no inicio do segundo registro em Reg ++p; // pp se posiciona no fim do primeiro nome do usuario em p pp = strchr (p, ' '); if (pp) { // pp separa o primeiro nome do resto do registro em p *pp = 0x00; // Chama funcao que vai adicionar o usuario no sistema AdicionaUser (Reg, p); } } } int main(int argc, char *argv[]) { char sAux[202]; FILE *fd; // Consiste se foi passado como parametro somente o nome do arquivo if (argc != 2) { printf("Parametro invalido.\n\nChame popula <arquivo>\n\n"); return; } // Abre o arquivo, se nao conseguir avisa if( (fd = fopen(argv[1], "r")) == NULL) { printf("Nao foi encontrado o arquivo de configuracao.\n\n"); return 0; } // Le linha a linha do arquivo chamando a funcao PopulaDados while(fgets(sAux, 200, fd)) PopulaDados(sAux); // Fecha o arquivo fclose(fd); return 1; }
Nenhum comentário foi encontrado.
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
firefox nao guarda meus logins nos sites (1)
Instalar debian testing (13) "por cima" do debian 12 (2)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)