Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- ############## Funksjoner ##############
- ## Sjekker mot passwd-fila om brukernavnet finnes
- ## Uses: getpwnam(), length().
- sub sjekk_navn
- {
- my $brukernavn = $_[0];
- my $finnes;
- my($name, $pass, $uid, $gid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($brukernavn);
- #print "Name: $name \nUID: $uid \nShell: $shell\n";
- if(length($name) > 0){
- $finnes = "ja";
- }else{
- $finnes = "nei";
- }
- return($finnes);
- }
- ## Genererer brukernavn fra navn
- ## Uses: substr(), sjekk_navn().
- sub gen_bruker
- {
- my $fornavn = $_[0];
- my $etternavn = $_[1];
- # Tar de tre første bokstavene i for og etternavn og setter sammen
- # til et lowercase brukernavn
- my $del1 = substr($fornavn, 0, 3);
- my $del2 = substr($etternavn, 0, 3);
- my $brukernavn = lc($del1.$del2);
- # Sjekker om brukernavnet finnes
- if(sjekk_navn($brukernavn) eq "ja"){
- my $i = 1;
- # Legger til et tall etter brukernavnet som økes helt til et
- # ledig brukernavn er funnet
- while(sjekk_navn($brukernavn) eq "ja"){
- $brukernavn = $brukernavn.$i;
- $i++;
- }
- return $brukernavn;
- }else{
- return $brukernavn;
- }
- }
- sub pass
- {
- my $brukernavn = $_[0];
- my @passord = `/usr/bin/perl shuffle.pl`;
- my $tall = int(rand(9));
- my $pass = $passord[$tall];
- my @user = ($brukernavn, $pass);
- return @user;
- }
- ############## Funksjoner ferdig ##############
- #$fil = "studenter.txt";
- $fil = $ARGV[0];
- # Åpner fila eller stopper skriptet
- open FILE, $fil or die $!;
- # Leser linje for linje
- while(<FILE>){
- # Splitter linjen opp mellom hver kolon og legger det i et array
- @linje = split(/:/);
- # Splitter opp navn i fornavn og etternavn
- @navn = split(/,/, $linje[0]);
- # Skriver ut ledig brukernavn
- # print gen_bruker($navn[1],$navn[0]);
- # Skriver ut ledig brukernavn og sikkert passord
- foreach(pass(gen_bruker($navn[1],$navn[0]))){
- print $_."\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement