Thank you On 02/25/2011 01:02 PM, Mike Miller wrote: > Just saw that you already did it. I'll try to finish this later, but > for now it has some possibly useful info (e.g., attached script)... > > > On Fri, 25 Feb 2011, Raymond Norton wrote: > >> Here is a sample of the list (yes, it came from a record the tech was >> keeping of email passwords). >> >> fiecke,04f13cke >> heiraas,2qasw# >> ed houg,6$I$Tr$8 >> johnson,j0hns0n >> kallenbach,RC68! >> crd klobe,jmc1862 >> kramer,r2bydoo1 > > > I'll just mention up front that I prefer tab-delimited files to > comma-delimited files for this purpose and for most other purposes. I > also think you would be much better off with more data (like real > names for users) -- see below my comment on comments. > > See the attached script for dealing with the passwords. The useradd > program (recommended by someone else in this thread) requires that the > password be entered as an encrypted string, not the original password. > The attached perl script will be used to encrypt the password. Save > it in your path and make it executable: > > chmod 755 password_encrypt.pl > > Suppose your list is stored in the file users.txt and suppose there is > exactly one comma on every line and the usernames are to be the string > son the left of the comma, but with spaces replaced by underscores, > then you could do this: > > (1) first test that the file format is correct: > > awk -F',' '{print NF}' users.txt | uniq | wc -l > > That should produce "1" as output, if the output is not "1" then your > file has too many commas on one or more lines, probably because you > have a password with a comma in it. > > (2) next, if you passed test 1, test that the usernames are unique: > > cut -d',' -f1 users.txt | tr ' ' '_' | sort | uniq -c | awk '{print > $1}' | sort -n | tail -1 > > That also should produce "1" as output. If you get a number greater > than one, then not all of your usernames are unique. > > (3) if you passed tests 1 and 2, you also want to know that the > usernames you are adding are not identical to any that already exist > in /etc/password, so do this: > > ( cut -d',' -f1 users.txt | tr ' ' '_' ; cut -d':' -f1 /etc/passwd ) | > sort | uniq -c | awk '{print $1}' | sort -n | tail -1 > > That also should produce "1" as output. If you get a number greater > than one, then at least one of your new usernames is identical to one > already in /etc/passwd. > > (4) If you passed tests 1 through 3, then you'll want to transform the > users.txt file into a little script for adding the users. It would be > better if you had more information for the comment field -- like their > actual names -- but you do what you can with what you've got. I like > a comment that contains "First Last <email at external.site>". > > You need to choose a group ID and an initial user ID, maybe "1000" we > can then make the nth user have UID equal to initial_UID+n. I'll > hardcode that initial UID number as 1000 here, and I'll hardcode the > GID as 100, but you can change them: > > echo -e "#!/bin/bash\n" > make_users.bash > chmod 700 make_users.bash > > > NOT DONE YET... > > awk -F',' '{print "useradd -u "1000+NR" -g 100 -s /bin/bash -p > $(password_encrypt.pl \042" > $2" > PASSWORD SALT) USERNAME > > #' users.txt >> make_users.bash > > Read the script, and if it looks good, run this: > > sudo ./make_users.bash > > > _______________________________________________ > TCLUG Mailing List - Minneapolis/St. Paul, Minnesota > tclug-list at mn-linux.org > http://mailman.mn-linux.org/mailman/listinfo/tclug-list -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20110225/d2c1ac75/attachment-0001.html>