Criando usuários através de arquivo texto
Publicado por Rodrigo Ferreira Valentim 06/09/2004
[ Hits: 8.576 ]
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; }
Função para concatenar texto ilimitada
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
Toda vez que tento atualizar o clamav me deparo com erros ao atualizar... (0)
Meu notebook não está funcionando no monitor secundário (2)
Queria saber se existe alguma forma de desistalar programa no ubuntu s... (2)
Quero saber sobre os melhores aplicativos de office para usar em 2024 ... (1)