-
Notifications
You must be signed in to change notification settings - Fork 0
/
dcdeluser
80 lines (67 loc) · 1.5 KB
/
dcdeluser
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
#!/bin/sh
USERDB="/etc/dovecot/users"
DOMAIN="" #set this variable for adding domain after username
print_help() #$1 - script basename
{
echo "Use $1 <username>"
echo "<username> - Username in $USERDB"
exit 0
}
ask_yn() #$1 - question
{
echo -n "$1 [Y/N]: "
while [ 1 -eq 1 ];do
read -s -n1
case "$REPLY" in
[yY])
echo
return 0
;;
[nN])
echo
return 1
;;
esac
done
}
if [ -z "$1" ]; then
print_help `basename $0`
fi
if [ "$1" == "--help" -o "$1" == "-h" ]; then
print_help `basename $0`
fi
if [ ! -f "$USERDB" ]; then
echo "$USERDB not exist or not a file!"
exit 1
fi
USERNAME="$1"
if [ -n "$DOMAIN" ];then #add default domain if set this
USERNAME="$USERNAME@$DOMAIN"
fi
USERNAME=`echo $USERNAME|awk '{print tolower($0)}'` #to lowercase
FOUND=0
MODIFED=0
TMPFILE=`mktemp`
for V in $(cat "$USERDB"); do
DBNAME=`echo $V|awk -F':' '{print tolower($1)}'` #to lowercase
if [ "$USERNAME" == "$DBNAME" ]; then #username found
FOUND=1 #set found flag
ask_yn "Delete user $DBNAME?"
if [ "$?" -eq 0 ];then #user answer Yes, delete user
MODIFED=1
#no copy user record
else
echo "$V" >>$TMPFILE #save user to temp file
fi
else
echo "$V" >>$TMPFILE #copy other user to temp file
fi
done
if [ "$MODIFED" -eq 1 ];then #file modifed
cp "$USERDB" "$USERDB-" #backup users file
cp "$TMPFILE" "$USERDB" #replace users file to temp file
fi
if [ "$FOUND" -eq 0 ];then
echo "User not found!"
fi
rm "$TMPFILE"