Criando usuários através de arquivo texto
Publicado por Rodrigo Ferreira Valentim 06/09/2004
[ Hits: 8.574 ]
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; }
Passando parâmetros com getopt
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)