Aaargh - new version!!

http://pastebin.com/yL2pvayv

Corrected a schoolboy error

for line in `cat bugalist`

to

for line in `cat $1`



On 3 May 2012 15:25, Richard Forth <richard.fo...@gmail.com> wrote:

> Thanks Jonathan,
>
> I've incorporated your suggestions in a new version:
>
> http://pastebin.com/v9k27RSA
>
> Cheers!
>
> Richard
>
>
> On 3 May 2012 15:07, Johnathon Tinsley <johnat...@positive-internet.com>wrote:
>
>> Hi Richard,
>>
>> Really quick scan, but it looks like you're loading a variable to run a
>> if on, basing it on grep (line 16 etc). You can do this directly, so
>> something like:
>>
>> if grep -q ^$group: /etc/group; then
>>  echo "found one or more!"
>> else;
>>  echo "didn't find any :("
>> fi
>>
>> The -q means grep is quiet, only returning via exit codes. Relevant man
>> page snippet:
>> -q, --quiet, --silent
>> Quiet;  do  not  write  anything  to  standard   output.    Exit
>> immediately with zero status if any match is found, even if an error was
>> detected.  Also see the -s  or  --no-messages  option. (-q is specified
>> by POSIX.)
>>
>> HTH,
>>
>> Johnathon
>>
>> On 03/05/12 14:43, Richard Forth wrote:
>> > Hi Peeps,
>> >
>> > I wanted to share with you a working BASH script that basically takes a
>> > textfile that looks kinda like this:
>> >
>> > sales:mark,sally,dave,sue,steve
>> > marketing:jason,philip,eric,steve
>> > ...
>> >
>> > and processes each line - lets take the first line as example:
>> >
>> > Checks to see if sales exists already in /etc/group
>> > If not creates it.
>> > then checks to see if each user exists, if they do
>> > it checks to see if they are already in the group,
>> > if not it adds it to the group
>> > if the user doesnt exist it creates the user and assigns a random 8
>> > character password, then adds it to the group.
>> > If you want one particular user to be in more than one group thats ok
>> > just add it to whatever line for that group (see steve in the example).
>> >
>> > Its only 49 lines of code, including documentation notes.
>> >
>> > Probably totally impractical in real life but it was an exercise in bash
>> > coding, with this aim in mind.
>> >
>> > If anyone wants a copy, I've created a public pastebin:
>> > http://pastebin.com/uPxsZcGr
>> >
>> > the textfile was originally called bugalist
>> >
>> >
>> >      8          for line in `cat bugalist`
>> >
>> >
>> > You can probably modify line 8 to be $1 or set up some code to check for
>> > arguments etc, which I now realise I missed out, and didnt document
>> > either (damn).
>> >
>> > Anyway just in case you wonder what "bugalist" was:
>> >
>> > ~/Dev_Area/bash $ cat bugalist
>> > u5:john,tessa,richard,steve
>> > u6:dorris,erran,jason,steve
>> > ~/Dev_Area/bash $
>> >
>> > Sample output:
>> > ~/Dev_Area/bash $ sudo ./buga
>> > ===========
>> > Processing Line:
>> > u5:john,tessa,richard,steve
>> > ===========
>> >         Creating group 'u5' ...
>> >                 Members: john,tessa,richard,steve
>> >                         Creating user 'john' ...
>> >                         Password for user 'john' set to: vM6oElDG
>> >                         Adding user 'john' to group 'u5' ...
>> >                         uid=1002(john) gid=1003(john)
>> > groups=1003(john),1002(u5)
>> >
>> >                         Creating user 'tessa' ...
>> >                         Password for user 'tessa' set to: t9jt2uRR
>> >                         Adding user 'tessa' to group 'u5' ...
>> >                         uid=1003(tessa) gid=1004(tessa)
>> > groups=1004(tessa),1002(u5)
>> >
>> >                         Creating user 'richard' ...
>> >                         Password for user 'richard' set to: vZddQN4g
>> >                         Adding user 'richard' to group 'u5' ...
>> >                         uid=1004(richard) gid=1005(richard)
>> > groups=1005(richard),1002(u5)
>> >
>> >                         Creating user 'steve' ...
>> >                         Password for user 'steve' set to: RG8fdZjG
>> >                         Adding user 'steve' to group 'u5' ...
>> >                         uid=1005(steve) gid=1006(steve)
>> > groups=1006(steve),1002(u5)
>> >
>> > ===========
>> > Processing Line:
>> > u6:dorris,erran,jason,steve
>> > ===========
>> >         Creating group 'u6' ...
>> >                 Members: dorris,erran,jason,steve
>> >                         Creating user 'dorris' ...
>> >                         Password for user 'dorris' set to: qDTgCcxn
>> >                         Adding user 'dorris' to group 'u6' ...
>> >                         uid=1006(dorris) gid=1008(dorris)
>> > groups=1008(dorris),1007(u6)
>> >
>> >                         Creating user 'erran' ...
>> >                         Password for user 'erran' set to: JOL47SrN
>> >                         Adding user 'erran' to group 'u6' ...
>> >                         uid=1007(erran) gid=1009(erran)
>> > groups=1009(erran),1007(u6)
>> >
>> >                         Creating user 'jason' ...
>> >                         Password for user 'jason' set to: 3UG416G6
>> >                         Adding user 'jason' to group 'u6' ...
>> >                         uid=1008(jason) gid=1010(jason)
>> > groups=1010(jason),1007(u6)
>> >
>> >                         User 'steve' already exists.
>> >                         Adding user 'steve' to group 'u6' ...
>> >                         uid=1005(steve) gid=1006(steve)
>> > groups=1006(steve),1002(u5),1007(u6)
>> >
>> >
>> > Enjoy!
>> >
>> > Feedback welcome.
>> >
>> > Enjoy!
>> > Rich
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Peterboro mailing list
>> > Peterboro@mailman.lug.org.uk
>> > https://mailman.lug.org.uk/mailman/listinfo/peterboro
>>
>>
>> --
>> All postal correspondence to:
>> The Positive Internet Company, 24 Ganton Street, London. W1F 7QY
>>
>> The Positive Internet Company Limited is registered in England and Wales.
>> Registered company number: 3673639. VAT no: 726 7072 28.
>> Registered office: Northside House, Mount Pleasant, Barnet, Herts, EN4
>> 9EE.
>>
>> _______________________________________________
>> Peterboro mailing list
>> Peterboro@mailman.lug.org.uk
>> https://mailman.lug.org.uk/mailman/listinfo/peterboro
>>
>
>
_______________________________________________
Peterboro mailing list
Peterboro@mailman.lug.org.uk
https://mailman.lug.org.uk/mailman/listinfo/peterboro

Reply via email to