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."