#!/bin/bash # clone a user function clone_user_ () { module_load confirm type confirm echo "=============" echo "this script will create a new user" echo "based on an existing user's data" echo echo "You will be shown a list of users who can currently log on" echo "Remember which user you would like to clone." echo "You will be asked for the new user's name, their password" echo "and the old user to clone". echo "=============" echo echo -n "New user's name: " read newuser echo -n "New user's password: " read newpassword echo echo "Current users you can clone:" echo "----" awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd echo echo -n "Old user to clone: " read olduser echo "olduser uid is $(id -u $olduser)" echo echo "You have selected: " echo "----" echo "new user: $newuser" echo "new user password: $newpassword" echo "old user: $olduser" echo olduser_GROUPS="$(id -Gn ${olduser} | sed "s/${olduser} //g" | sed "s/ ${olduser}//g" | sed "s/ /,/g"),$olduser" olduser_SHELL=$(awk -F : -v name=${olduser} '(name == $1) { print $7 }' /etc/passwd) echo "old user groups: " echo "----" echo $olduser_GROUPS echo "olduser shell: " echo $olduser_SHELL # read -rsp $'Press any key to continue or ctrl-c to exit...\n' -n1 key # return # confirm "ready to clone user, begin?" || return 1 # useradd --groups $olduser_GROUPS --shell $olduser_SHELL $newuser # echo $newuser:$newpassword | chpasswd # read -rsp $'ready to make home direcoty -- ctrl-c to exit...\n' -n1 key # mkdir /home/$newuser # chown -R $newuser:$newuser /home/$newuser # echo # echo "Script should be done now." # echo # echo "Do you see your new users name below?" # echo # awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd # echo # echo "We are now going to copy the old user's home folder to the new user" # echo "then change ownership to the new user" # echo # read -rsp $'Ready to copy home folder --- or ctrl-c to exit...\n' -n1 key rsync -aPv --exclude 'Downloads' /home/$olduser/. /home/$newuser/ chown -R --from=$olduser $newuser:$newuser /home/$newuser echo echo "Now we are going to change the names of files and folders to the new user" echo grep -rlI $olduser /home/$newuser/ . | sudo xargs sed -i 's/$olduser/$newuser/g' echo echo "Done now." echo read -rsp $'Press any key to exit...\n' -n1 key echo echo } clone_user () { if [[ $EUID != 0 ]]; then clone=$(declare -f clone_user_) module_load confirm confirm=$(declare -f confirm) sudo bash -c "$confirm; $clone; clone_user_" else echo run as regular user with sudo privliges and it will elevate fi } # # if script was executed then call the function (return 0 2>/dev/null) || clone_user