Link to home
Start Free TrialLog in
Avatar of mesdjefferson
mesdjefferson

asked on

I need a bash script converted to perl

#!/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
Avatar of Tintin
Tintin

Why do you want to convert it to Perl when it will be mostly shelling out to do the real work?
Avatar of mesdjefferson

ASKER

Well, I'm trying to teach myself Perl and chose a fairly simple bash script to compare the two. I just wanted to see how the look and feel of Perl flowed.
I figured if I have a script I am comfortable with to compare it to would help me better understand it.
Great that you want to learn, what have you programmed sofar for the above script?
So far I have gotten just the first Input option to run correctly. I have been playing with this for days now and have started over a million times. I don't know why I'm not getting it. I know it can't be this difficult. It's definitely user error. This is what I have so far. Thanks for taking the time to help me.

#!/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 = `groupadd $newgroup`;
                                                                                                                                                            print "Adding group $newgroup...\n";}

else
{print "Can't create group\n"};
{yesorno;}
                                                                                                                                          

else ($input == 2)                                                                                                                                          {print "Please enter a group name to delete\n";
                                                                                                                                                
my $groupdel = `/usr/sbin/groupdel -g`;
              my $delgroup = <>;                                                                                                                  
chomp ($delgroup);
print "Do you want to delete $delgroup y/n?\n";
                                                                                                                  
$_ = <>;
chomp;                                          
$_ = "y"

if ($_ =~ /[Yy]/);
                                                                                                                                    
my $cmd = `groupdel $delgroup`;
                                                                                                                                    
print "Deleting group $delgroup...\n";}

else
{print "Can't delete group\n"};
{yesorno;}                  

exit      0;}
syntax error at Q_28636831.perl line 60, near "else"
Did you mean
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 = `groupadd $newgroup`;
        print "Adding group $newgroup...\n";}

else
{print "Can't create group\n"};
{yesorno;}


}elsif ($input == 2)        {print "Please enter a group name to delete\n";
ASKER CERTIFIED SOLUTION
Avatar of ozo
ozo
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks for your help! I've been playing around  with this script for a few days now and I'm starting to get a hang of the syntax. I'm going to start working on arrays next!  Do you have any helpful advice or sites that have video tutorials?