-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinstall.sh
97 lines (78 loc) · 2.42 KB
/
install.sh
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
#!/bin/bash
function do_install () {
HOME_DIR="$(cat /etc/passwd | grep -P ""^$1:"" | cut -d: -f6)"
DDNS_CONF_DIR="$HOME_DIR/.ddns"
SCRIPT_PATH="$(readlink -f ""$0"")"
SOURCE_DIR="$(dirname ""$SCRIPT_PATH"")"
if [[ ! -d "$HOME_DIR" ]]; then
echo "Home directory $HOME_DIR not found"
return 1
fi
mkdir -p "$DDNS_CONF_DIR" 2>/dev/null && \
cp -r "$SOURCE_DIR/bin/"* /usr/bin 2>/dev/null && \
cp -r "$SOURCE_DIR/.ddns/"* "$DDNS_CONF_DIR" 2>/dev/null && \
cp -r "$SOURCE_DIR/lib/systemd/system/"* /lib/systemd/system 2>/dev/null && \
chown -R "$1.$1" "$DDNS_CONF_DIR" 2>/dev/null && \
chmod 0755 /usr/bin/ddns.sh 2>/dev/null && \
chmod 0700 "$DDNS_CONF_DIR" 2>/dev/null && \
chmod 0600 "$DDNS_CONF_DIR/"* 2>/dev/null
if [[ "$?" != "0" ]]; then
echo 'Failed to copy files to system.'
return 1
fi
return 0
}
function do_uninstall () {
HOME_DIR="$(cat /etc/passwd | grep -P ""^$1:"" | cut -d: -f6)"
DDNS_CONF_DIR="$HOME_DIR/.ddns"
SCRIPT_PATH="$(readlink -f ""$0"")"
SOURCE_DIR="$(dirname ""$SCRIPT_PATH"")"
if [[ ! -d "$HOME_DIR" ]]; then
echo "Home directory $HOME_DIR not found"
return 1
fi
rm -f /lib/systemd/system/ddns.service 2>/dev/null
rm -f /usr/bin/ddns.sh 2>/dev/null
rm -f "$DDNS_CONF_DIR/"* 2>/dev/null
rmdir "$DDNS_CONF_DIR" 2>/dev/null
return 0
}
function usage () {
echo "Usage:"
echo " ddns.sh install <username>"
echo " ddns.sh uninstall <username>"
}
if [[ "$#" != "2" ]]; then
usage
exit 0
fi
COMMAND="$1"
shift
USERNAME="$1"
shift
if [[ "$COMMAND" == "--help" || "$COMMAND" == "-h" ]]; then
usage
exit 0
fi
if ! id "$USERNAME" >/dev/null 2>&1; then
echo "User $USERNAME not exists"
exit 1
fi
if [[ "$(id -u)" != "0" ]]; then
echo "Require root permission."
exit 1
fi
if [[ "$COMMAND" == "uninstall" ]]; then
do_uninstall "$USERNAME"
echo "Uninstalled successfully"
else
do_install "$USERNAME"
if [[ "$?" == "0" ]]; then
echo "Installed successfully"
else
echo "Failed to install."
echo "Uninstalling ..."
do_uninstall "$USERNAME"
exit 1
fi
fi