1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Script em PERL (Criar um utilizador)

Discussão em 'Programação' iniciada por joji, 6 de Abril de 2009. (Respostas: 6; Visualizações: 1010)

  1. joji

    joji Power Member

    Boas,

    estou a volta de um script com linguagem PERL para criar um utilizador, ando a tentar no UBUNTU fazer um mas estou a ter dificuldades.
    Alguem que me possa ajudar ou que dÊ umas luzes?
     
  2. marcobjorge

    marcobjorge Power Member

    Boas,

    Posso perguntar qual o objectivo?

    Porque não fazes uma chamada aos comandos bash adduser ou useradd?
     
  3. joji

    joji Power Member


    Penso que não posso utilizar uma chamada a um desses comandos. O objectivo é ter um script feito por mim para criar utilizadores, também quero fazer um para verificar as configurações de utilizadores e remover utilizadores. Ainda não estou bem integrado em fazer scripts em que se mexe no sistema precisava de um apoio-base.

    Encontrei um script na internet (ao qual não vou tirar direitos de autor) que penso que cria utilizadores. Aqui vai:

    ------------------------------------------------------------------------------------------------------------------------
    #!/usr/bin/perl

    #
    # adduser.pl
    #
    # Add Users, Set Up Profiles,
    # Set The Password And Email
    # An Admin
    #
    # 2008 - Mike Golvach - [email protected]
    # Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
    #

    if ( $#ARGV != 2 ) {
    print "Usage: $0 [dirname - no slashes ] [ logname ] [ comment - in quotes ]\n";
    exit(1);
    }

    $userdir = $ARGV[0];
    $username = $ARGV[1];
    $commentfield = $ARGV[2];
    $home = "$ARGV[0]/$ARGV[1]";
    @argument2 = split(//,$ARGV[1]);
    $argument2 = @argument2;

    if ( $argument2 > 8 || $argument2 < 5 ) {
    print "Please choose a logname between 5 and 8 characters!\n";
    exit(1);
    }

    $SIG{'HUP'} = 'IGNORE';
    $SIG{'INT'} = 'IGNORE';

    $count = `awk -F":" '{print \$3}' /etc/passwd|sort -n|tail -1`;
    chomp($count);
    $usernumber = $count++;

    print "\n";
    print "Check this out before proceeding!!!\n";
    print "-----------------------------------\n";
    printf("Logname:\t%s\n", $username);
    printf("Homedir:\t/%s/%s\n", $userdir, $username);
    printf("Comment:\t%s\n", $commentfield);
    print "-----------------------------------\n";
    print "\n";
    print "\n";
    print "All of this ok?\n";
    print "\n";
    print "y or n\n";
    print "\n";

    $reply = <STDIN>;
    chomp($reply);

    if ( $reply =~ /n/i ) {
    print "\n";
    print "All right, give it another shot if you want!\n";
    exit(0);
    } elsif ( $reply =~ /y/i ) {
    true;
    } else {
    print "Only y or n - case insenstive allowed\n";
    print "Try Again\n";
    exit(1);
    }

    open(A, ">>/etc/passwd");
    print A "$username:x:$usernumber:1:$commentfield:/${userdir}/$username:/bin/ksh\n";
    close(A);

    open(A, ">>/etc/shadow");
    print A "$username:*LK*:::::::\n";
    close(A);

    mkdir($home, 0755);
    chdir "$home";

    open(A, ">>.profile");
    print A "stty istrip\n";
    print A "PATH=/bin:/usr/bin:/usr/local/bin:/usr/share/bin:.\n";
    print A "export PATH\n";
    print A "\n";
    print A "\n";
    close(A);

    chown($home, 1, $username);
    system("chown ${usernumber}:1 .profile");
    system("chmod 0644 .profile");

    open(MAILER, "|/usr/lib/sendmail -t") or die "Cannot Open Sendmail!\n";
    print MAILER "To: devnull\@xyz.com\n";
    print MAILER "Subject: New User Added!!!\n";
    print MAILER "\n";
    print MAILER "$commentfield\n";
    print MAILER "has a new account set up!\n";
    print MAILER "The email address is $username\@host.com!\n";
    print MAILER "\n";
    print MAILER "Thank you,\n";
    print MAILER "\t Mike Golvach\n";
    close(MAILER);

    print "\n";
    print "All Done!!!\n";
    print "\n";
    print "Now set the Password!\n";
    print "\n";
    system("/usr/bin/passwd $username");
    print "\n";
    print "Password set!!! Take a break...\n";

    ----------------------------------------------------------

    Que achas ?
     
    Última edição: 6 de Abril de 2009
  4. marcobjorge

    marcobjorge Power Member

    Acho que não só a mudança de password como também a criação do user devia ser feita utilizando os comandos de sistema (em vez de echo directo para o ficheiro /etc/passwd).

    Boa sorte
     
  5. joji

    joji Power Member

    Tendo em conta que seria com os comandos do sistema como ficaria ? Podes ajudar me ? Deixava dessa maneira para poder avançar com outros scripts e depois se tivesse tempo desenvolvia a criação de utilizadores sem ser com esses comandos.
     
  6. slack_guy

    slack_guy Power Member

    Aqui e aqui tens dois exemplos que me parecem razoáveis.
     
  7. joji

    joji Power Member

    valeu cara :P vou analisar os scripts kd tiver o ubuntu á frente ;) mas o 1º parece-me o mais adequado.. pelo k percebi n xama o comando useradd ou seja é um comando mm d "raiz" n? o outro é k parec k já vai buscar uns scripts inclusive o useradd..

    Precisava de um script para gerar backups incrementais ou totais, tem de colocar automaticamente a tarefa no crontab. Isto é uma linha de código simples ou tem muito que se lhe diga?
     
    Última edição: 6 de Abril de 2009

Partilhar esta Página