We help IT Professionals succeed at work.

I am new to Perl and can't figure out how to get the groupadd to work in my script.

mesdjefferson
on
I have the same script in bash but was playing with it in Perl but can't get it.

Bash Script

Open in new window


#!/bin/bash

while true;
do
clear
echo "========================="
echo "      --- Menu ---"
echo "========================="
echo "Enter 1 to Create Group: "
echo "Enter 2 to Remove Group: "
echo "Enter 3 to Create User: "
echo "Enter 4 to Remove User: "
echo "Enter 5 to Kill User Processes: "
echo "Enter q to exit the menu: "
echo -e "\n"
echo -e "Enter Your selection \c"

read choice
case ${choice} in

1)
echo "Enter group name to add"
read newgroup
if egrep -i "$newgroup" /etc/group
then
echo "Group already exists"

else
groupadd $newgroup
echo "Group $newgroup added"
fi
;;

2)
echo "Enter Group name to delete"
read delgroup
if egrep -i "$delgroup" /etc/group
then
groupdel $delgroup
echo "Group $delgroup deleted"

else
echo "Group does not exist"
fi
;;

3)
echo "enter User name to add"

read newuser
if egrep -i "$newuser" /etc/passwd
then
echo "User already exists"

else
useradd -m "$newuser"
passwd $newuser

 read -p "Does a group for new user exist?" yn
    case $yn in
        [Yy]* ) read -p "Please enter group name."; break;
read groupname
useradd –G $groupname $newuser;
 break;;
        [Nn]* ) read -p "Enter the name of new group."; echo
read newgroup
groupadd $newgroup
useradd –G $newgroup $user;

esac

fi
;;

4) echo "Enter user name to be deleted"
read deluser
if egrep -i "$deluser" /etc/passwd >/dev/null
then
userdel -rf "$deluser"
echo "User $deluser has been deleted"

else
echo "User does not exist"
fi
;;

5) echo "Which user processes need to be shutdown?"
read user
ps -aux | grep {user}
read -p "Confirm shutdown of running processes?" yn
case $yn in
        [Yy]* ) read -p "User processes being killed"
kill ps -aux | grep {user} | awk "{print $2}";;

      [Nn]* ) echo "User not found. No processes will be killed"
esac

;;

q) exit
esac

echo -e "Enter Your selection \c"
read input
done

Perl Script (just a piece):

#!/usr/bin/perl

use strict;
use warnings;
use Cwd qw();

sub yesorno
      {YESNO:
      print "Return to main menu? [Y/N]";
      my $return = <>;
      chomp($return);
if (($return eq "Y") || ($return eq "y"))
      {goto START;}
elsif (($return eq "N") || ($return eq "n"))
      {exit;}
else {print "Invalid selection, please try again\n";
      goto YESNO;}
}

START:

my $input = "";

do
{

    print "1. Create Group:\n";
    print "2. Remove Group:\n";
    print "3. Create User:\n";
    print "4. Remove User:\n";
    print "5. Kill User Processes:\n";
    print "6. exit\n";

    print "Enter your choice: ";
    $input = <>;
    chomp($input);
                                                                                                                                                                                                                                                                        
if ($input == 1)                                                                                                      

    {print "Please enter a group name to create\n";                                                                  
my $groupadd = '/usr/sbin/groupadd -g';
my $newgroup = <>;                                                                                                            
chomp ($newgroup);                                                                                                
print "Do you want to create $newgroup y/n?\n";

$_ = <>;
chomp;
$_ = "y"                                                                                                                         

if ($_ =~ /[Yy]/);

my $cmd = (addgroup      $newgroup);
     print "$cmd\n";                                                                                                    
     print "Adding group $newgroup...\n";}
                                                                                                                                
else
{print "Can't create user\n"};
{yesorno;}                                                                                                                                          
exit 0;
}
Comment
Watch Question

Most Valuable Expert 2014
Top Expert 2015
Commented:
my $cmd = `addgroup      $newgroup`;

Author

Commented:
Thank you for your quick response. This really helped me!! I can't believe it was as simple as that.  Would it be safe to assume that creating a user and adding them to a group would be just as simple?