Link to home
Start Free TrialLog in
Avatar of tyweed420
tyweed420

asked on

trying to add multiple users in a script either using user add or manually

I'm trying to write a script that when called with 3 parameters as followed a letter,lower number id,max id will create generic user accounts.All acounts need to have passwords set to st3T63

example call   /home/john/acctgenerator s 120 140

would use s as the startig letter and create accounts s120,s121,.....s140

I'm thinking to try using useradd in the script however everything would go smoothly except how to set the password for each account. I'm not sure if this would be possible experts would i be better off opening up /etc/passwd doing everything manually?

this is what i'm thinking the script will look like in it's infancy.............


while [ $1 > $2 ]  <=== i think this grabs the first two parameters of the call...however are they strings i need 120 to 140 to int's here because thats how many accounts i'll need
do

echo useradd -u $0+$1 -c$0 -g11 -s/bin/ksh "$0+$1"
echo passwd st3T63

$1 = `expr $1 + 1` <== increment 120 to 121,.140
done

hows this logic look ?

any tips and hits would be appreciated
Avatar of dsacker
dsacker
Flag of United States of America image

This example merely echoes the results, so you'll need to code your account setup where the echo is, but the following should work:

letter="$1"
start="$2"
end="$3"

while [ $start -le $end ]; do
    echo $letter$start
    start=`expr $start + 1`
done
Avatar of tyweed420
tyweed420

ASKER

how about useradd or manually write to /etc/passwd which would be easier because i need to insert a password anmd i don't think useradd will allow me to do this.
See https://www.experts-exchange.com/questions/20476614/automate-additions-of-users-and-passwords-with-shell-script.html for how to do the password bit; It's not a trivial task (You daren't modify the password file manually in case it gets corrupted), but that link shows how to do it safely via a script
SOLUTION
Avatar of dsacker
dsacker
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I need some help this is not working i get these following errors.

1. while [ -le ]  :Command not found
2. syntax error near unexpected token  'done'
3. 'done'


any ideas why??

i'm still trying to get this code to create users any help would be great
ok

while[ 1 -le 5 ]  is what i got when i used the parameters 1 5 but are they already integers that can be compared because it is giving me errors
I want to try to do this user addidn manually how does this look below. I'm having difficulty figuring out how to set the password

letter="$1"
start="$2"
end="$3"

while [ $start -le $end ]; do
vi /etc/passwd
echo "$letter$start:rattler:$start:10:"$letter$start":/export/home/$letter$start:/bin/ksh" >> /etc/passwd
pwconv
mkdir /export/home/$letter$start
cp /etc/skel/local.cshrc /export/home/$letter$start/.cshrc
cp /etc/skel/local.login /export/home/$letter$start/.login
cp /etc/skel/local.profile /export/home/$letter$start/.profile
chown -R $letter$start:10 /export/home/$letter$start
passwd $letter$start
type rattler somehow
start=`expr $start + 1`
done
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I'm guessing you're using Solaris - You can get expect (+ its dependencies, tcl, tk and libgcc)  from http://www.sunfreeware.com/

If you're using another version of Unix, let us know what it is and we'll find the "expect" binaries for you. Unless, of course, you prefer to compile them yourself...