On Fri, May 9, 2008 at 12:56 PM, Rob Dixon <[EMAIL PROTECTED]> wrote:

> Lokeey wrote:
> >
> > I'm writing this script to remove users from a file, the sudoers file, to
> be
> > more specific.
> >
> > Here is what I have so far, not sure where to go from here.
> >
> > *#!/usr/bin/perl -w
>
> There's a star before your #! Is it a typing mistake?
>
> Also,
>
>  use strict;
>
> or there is little point in declaring variables with 'my'. And
>
>  use warnings;
>
> is better than the -w command-line option.
>
> > # this script removes a user from sudoers file
>
> I suggest you write a simple usage help in here, for instance
>
> die <<USAGE unless @ARGV;
>  This program should be run with command-line parameters like this:
>    :
>    :
> USAGE
>
> > my $sites = $ARGV[0];
> > my $user = $ARGV[1];
>
> Fine. But you don't use $sites or $user again. What does your program do
> exactly?
>
> > for my $site ($#ARGV[1]){
> >   open FILE, "$_/local/etc/sudoers" or die "cannot open sudoers for
> $sites: $!";
>
> You have written a 'for' iterator, but its list is $#ARGV[1] which doesn't
> make
> any sense. I doubt if it will compile. Was $ARGV[0] supposed to be a list
> of
> sites somehow?
>
> > print "Enter username you wish to remove from $sites sudoers.\n";
> >
> >   while (<FILE>) {s/$_//}
> >   close FILE;
> > }*
>
> (Ah, and another star. Delimiters for pasted code somehow?)
>
> You prompt for a username, even though you have already used $ARGV[1] for
> $user.
> And you don't read from STDIN to see what the user typed in response to the
> prompt.
>
> I suggest you forget about @ARGV and prompting for and retrieving input.
> Hard
> code a case where there is only a single site and username to be removed
> and get
> that working, with our help as necessary. Then you can expand your program
> to
> take parameters and prompt for input if that is what you want.
>
> HTH,
>
> Rob
>
>
Rob thanks for your input. Yes the * is a typo or pasted somehow. Rushed and
wasn't paying attention, and worked on it some more after I sent that out
and thought about how the ARGV and my other syntax, it didn't make sense to
me. But I saw your comment just now and had already taken out the ARGV.
Here's what I have so far. I'm just not sure how to lay out my loop, (while
or if)

*#!/usr/bin/perl -w

# this script removes a user from sudoers file

print "Enter Site-ID: "; $site = <STDIN>;
   chomp($site);

print "\nEnter the username to remove from /$site/local/etc/sudoers: " ;
$user = <STDIN>;
   chomp($user);

# confirm user to be removed

print "\n$user will be removed from /$site/local/etc/suders. ";

  open FILE, "@$site/local/etc/sudoers" or die
  "cannot open sudoers for $sites. ";*

*### not exactly sure how to lay out my loop or if i should use while or if
statements###*
*
print "Done! User $user has been removed from $site sudoers. \n";*


-- 
"It's not what people call you, it's what you answer to."

Reply via email to