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