New build path variable
[freeradius.git] / scripts / create-users.pl
1 #!/usr/bin/perl
2
3 # Purpose:  create lots of random users and passes
4 # for testing your radius server
5 # Read doc/README.testing for more information
6
7 $passfile = "./passwd";
8 $shadfile = "./shadow";
9 $radfile = "./radius.test";
10 $nocrypt = "./passwd.nocrypt";
11 $users = "./radius.users";
12
13 if($ARGV[0] eq "") {
14         print "\n\tUsage:  $0  <number of users>\n\n";
15         exit(1);
16 } else {
17         $numusers = $ARGV[0];
18 }
19 $userlen = 6;
20 $passlen = 6;
21
22 open(PASS, ">$passfile") || die "Can't open $passfile";
23 open(SHAD, ">$shadfile") || die "Can't open $shadfile";
24 open(RAD, ">$radfile") || die "Can't open $radfile";
25 open(NOCRYPT, ">$nocrypt") || die "Can't open $nocrypt";
26 open(USERS, ">$users") || die "Can't open $users";
27
28 for ($num=0; $num<$numusers; $num++) {
29         # generate username
30         $username = "";
31         for($i=0; $i<rand($userlen)+2; $i++) {
32                 do { ($char = chr((rand 25)+97))} until $char=~/[A-Za-z]/;
33                 $username .= $char;
34         }
35         # Make sure they're unique
36         if(($userlist{$username}) || (getpwnam($username))) {
37                 $num--;
38                 next;
39         }
40         $userlist{$username} = 1;
41
42         # generate password
43         $password = "";
44         for($i=0; $i<rand($passlen)+2; $i++) {
45                 do { ($char = chr((rand 25)+97))} until $char=~/[A-Za-z]/;
46                 $password .= $char;
47         }
48
49         if (length($num)%2==1) {
50             $num="0".$num;
51         }
52         printf PASS "$username:%s:1001:1001:Name:/dev/null:/dev/null\n", crypt($password, $password);
53         printf SHAD "$username:%s:1000:0:99999:7:::\n", crypt($password, $password);
54         printf RAD  "User-Name=$username, User-Password=$password,NAS-IP-Address=127.0.0.1,NAS-Port-Id=0\n\n";
55         print NOCRYPT "$username:$password\n";
56         print USERS "$username  Cleartext-Password := \"$password\"\n\tClass=\"0x$num\"\n\n";
57 }
58
59 close(PASS);
60 close(SHAD);
61 close(RAD);
62 close(NOCRYPT);
63 close(USERS);
64 print "\nCreated $numusers random users and passwords\n\n";