scripts and tools to administer the lingy.in public unix / tilde
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

77 строки
1.5KB

  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. my $WORKING_DIR = "/home/gashapwn/lyadmin/";
  5. my $ACCOUNT_DIR = "test/";
  6. my $FULL_PATH = "$WORKING_DIR$ACCOUNT_DIR";
  7. my $SHELL_ENUM = {
  8. "SHELL_BASH" => "/usr/local/bin/bash",
  9. "SHELL_KSH" => "/bin/ksh"
  10. };
  11. my @g;
  12. sub create($){
  13. my $id = $_[0];
  14. my $fn1 = $FULL_PATH.$id.".ident";
  15. # my $fn2 = $FULL_PATH.$id.".pub";
  16. my $username;
  17. my $shell_pref;
  18. my $user_email;
  19. my $pub_key;
  20. open FILE, $fn1 or die "could not open file $fn1";
  21. $username = <FILE>;
  22. chomp $username;
  23. $user_email = <FILE>;
  24. chomp $user_email;
  25. {
  26. my $s0 = <FILE>;
  27. chomp $s0;
  28. $shell_pref = $SHELL_ENUM->{$s0};
  29. }
  30. $pub_key = <FILE>;
  31. chomp $pub_key;
  32. if(length($username) > 31 || !($username =~ /^[A-Za-z][A-Za-z0-9]+$/)){
  33. printf("%s has an INVALID username\n", $id);
  34. die ("oh no");
  35. }
  36. {
  37. my $cmd;
  38. $cmd = "useradd -m -s " . $shell_pref . " " . $username;
  39. printf("Y/N is this command OK?: %s\n", $cmd);
  40. if(!(<STDIN> =~ /^y/i)){
  41. die "invalid characters?!!";
  42. }
  43. system($cmd);
  44. # system("cat $FULL_PATH/$id.pub > /home/$username/.ssh/authorized_keys");
  45. system("echo '$pub_key' > /home/$username/.ssh/authorized_keys");
  46. system("chmod 711 /home/$username");
  47. system("rm $fn1");
  48. # system("rm $FULL_PATH/$id.pub");
  49. system("echo $username >> user_list.txt");
  50. }
  51. close FILE;
  52. }
  53. @g = glob("$FULL_PATH*");
  54. @g = map { s/.*\/([^\/]*).ident$/$1/; $_ } grep {$_ =~ /ident$/} @g;
  55. for my $fn (@g){
  56. create($fn);
  57. }