Criando usuários através de arquivo texto
Publicado por Rodrigo Ferreira Valentim 06/09/2004
[ Hits: 8.831 ]
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;
}
Programa para cálculo de números complexos
Integração numérica - Método da Quadratura Gaussiana
Cálculo de divisores de um número.
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como impedir exclusão de arquivos por outros usuários no (Linux)
Cirurgia no Linux Mint em HD Externo via USB
Anúncio do meu script de Pós-Instalação do Ubuntu
Formas seguras de instalar Debian Sid (2)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Alguém executou um rm e quase mata a Pixar! (3)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









