In this tutorial, we will show you how to write a shell script to add a user in Linux. In the script, we will use useradd command to add user and groupadd command to add user to group.
Add new user using shell script
The following shell script add a new user which can create username, primary group, home directory and shell. We are using useradd command to create user.
#!/bin/bash while [ x$username = "x" ]; do read -p "Please enter the username you wish to create : " username if id -u $username >/dev/null 2>&1; then echo "User already exists" username="" fi done while [ x$group = "x" ]; do read -p "Please enter the primary group. If group not exist, it will be created : " group if id -g $group >/dev/null 2>&1; then echo "Group exist" else groupadd $group fi done read -p "Please enter bash [/bin/bash] : " bash if [ x"$bash" = "x" ]; then bash="/bin/bash" fi read -p "Please enter homedir [/home/$username] : " homedir if [ x"$homedir" = "x" ]; then homedir="/home/$username" fi read -p "Please confirm [y/n]" confirm if [ "$confirm" = "y" ]; then useradd -g $group -s $bash -d $homedir -m $username fi
Sample Result
sudo ./linux_user.sh Please enter the username you wish to create : test Please enter the primary group. If group not exist, it will be created : test Please enter bash [/bin/bash] : Please enter homedir [/home/test] : Please confirm [y/n]y 22:12:58 [test@Desktop] :~ id test uid=1003(test) gid=1003(test) groups=1003(test)
Learn above script line by line
#Write to console ask to enter group and save input to group variable
read -p "Please enter the primary group. If group not exist, it will be created : " group
#check if group already exist
if id -g $group >/dev/null 2>&1; then
#just warn that group already exist
echo "Group exist"
else
#if group not exist – create one more
groupadd $group
fi
#end of while loop
done
#ask to enter preferred bash
read -p "Please enter bash [/bin/bash] : " bash
#check if no input
if [ x"$bash" = "x" ]; then
#if no input, use default bash
bash="/bin/bash"
fi
#ask to enter preferred homedir
read -p "Please enter homedir [/home/$username] : " homedir
#check if no input
if [ x"$homedir" = "x" ]; then
#if no input , use default homedir
homedir="/home/$username"
fi
#ask to confirm all inputs
read -p "Please confirm [y/n]" confirm
#if input y
if [ "$confirm" = "y" ]; then
#command to add user with all entered info
useradd -g $group -s $bash -d $homedir -m $username
fi
how about a script that does this on solaris 8,9,10,11 and across multiple servers?
We will include solaris section soon, so we could include it there..