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 -------------- next part -------------- A non-text attachment was scrubbed... Name: password_encrypt.pl Type: text/x-perl Size: 669 bytes Desc: URL: <http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20110225/28e3c743/attachment.pl>