Advertisement
Guest User

Untitled

a guest
Sep 1st, 2015
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #!/usr/bin/perl -T
  2.  
  3. use Term::ANSIColor;
  4. use strict; use warnings;
  5.  
  6. $ENV{"PATH"} = "/usr/bin:/bin";
  7.  
  8. my $wantedgroup = shift;
  9.  
  10. my %groupmembers;
  11. my $usertext = `getent passwd`;
  12.  
  13. my @users = $usertext =~ /^([a-zA-Z0-9_-]+):/gm;
  14.  
  15. foreach my $userid (@users)
  16. {
  17. my $usergrouptext = `id -Gn $userid`;
  18. my @grouplist = split(' ',$usergrouptext);
  19.  
  20. foreach my $group (@grouplist)
  21. {
  22. $groupmembers{$group}->{$userid} = 1;
  23. }
  24. }
  25.  
  26. if($wantedgroup)
  27. {
  28. print_group_members($wantedgroup);
  29. }
  30. else
  31. {
  32. foreach my $group (sort keys %groupmembers)
  33. {
  34. print "group: ";
  35. print color('bold blue');
  36. printf "%-40s", $group;
  37. print color('reset');
  38. printf "%10s", "members: ";
  39. print_group_members($group);
  40. print "\n";
  41. }
  42. }
  43.  
  44. sub print_group_members
  45. {
  46. my ($group) = @_;
  47. return unless $group;
  48.  
  49. foreach my $member (sort keys %{$groupmembers{$group}})
  50. {
  51. print color('magenta');
  52. print "\"",$member,"\" ";
  53. print color('reset');
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement