-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathadd_bulk_user.sh
More file actions
112 lines (97 loc) · 2.21 KB
/
add_bulk_user.sh
File metadata and controls
112 lines (97 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
# Script to add, delete, assign password to multiple users in linux
IFS=$'\n'
declare -A name_pass
TEMP1="/tmp/file1.log"
TEMP2="/tmp/file2.log"
TEMP3="/tmp/file3.log"
function delete_temp() {
rm -rf $TEMP1 $TEMP2 $TEMP3 || true
}
function usage(){
echo "Usage: $0 -u|--user -p|--password"
echo "-u|--user: Provide Username To Add"
echo "-p|--password Provide password to Assign to User"
echo "-d|--delete Provide Username to Delete"
exit 1
}
[ $# -lt 1 ] && usage || true
[ $(id -u) -eq 0 ] || { echo "$0: Only root may add a user or group to the system."; exit 1;}
trap delete_temp EXIT
function add_user() {
local NAME=$1
local user=""
for user in $NAME;do
if ! getent passwd $user > /dev/null 2>&1; then
useradd -m -d /home/$user -s /bin/bash $user || { echo "$0: User \"$user\" addition failed."; }
else
echo "The user '$user' already exits."
fi
done
}
function delete_user() {
local NAME=$1
local user=""
for user in $NAME;do
if getent passwd $user > /dev/null 2>&1; then
[ -d /home/$user ] && rm -rf /home/$user || true
userdel $user
else
echo "User \"$user\" does not exist"
fi
done
}
function assign_password(){
local user_pass=$1
echo "$user_pass:${name_pass[$user_pass]}" |sudo chpasswd || { echo "$0: Failed to set password for the $user_pass."; }
}
#Parsing Args
while [[ $1 ]];do
case $1 in
-u | --user)
NAME=$2
shift
;;
-p | --password)
PASS=$2
shift
;;
-d | --delete)
DEL=$2
shift
;;
esac
shift
done
[ -n "$NAME" ] && echo $NAME > $TEMP1 || true
[ -n "$PASS" ] && echo $PASS > $TEMP2 || true
[ -n "$DEL" ] && echo $DEL > $TEMP3 || true
function user_pass_mapping() {
id=$1
pass=$2
local i=""
while read line
do
for i in $line
do
eval name_pass$(echo $i|awk -F' ' '{print "["$1"]""="$2}')
done
done < <(paste <(cat $id|tr ',' '\n') <(cat $pass|tr ',' '\n'))
}
function main(){
SCRIPT=$1
FILE=$2
while read line
do
for LINE in $line
do
$SCRIPT $LINE
done
done < <(cat $FILE|tr ',' '\n')
}
[ -s $TEMP1 ] && main add_user $TEMP1 || :
[ -s $TEMP3 ] && main delete_user $TEMP3 || :
[ -s $TEMP1 ] && [ -s $TEMP2 ] && user_pass_mapping $TEMP1 $TEMP2 && \
for key in "${!name_pass[@]}";do
assign_password $key
done || true