blob: a125513bfc8e4540e91854b4338a9ae099c0ff38 (
plain) (
blame)
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#! /bin/sh
ask() {
local question default answer
question=$1
default=$2
# pkg_add fails anyhow, if we do not create the user/group
if [ "x${BATCH}" = xno ]; then
read -p "${question} [${default}]? " answer
fi
if [ "x${answer}" = x ]; then
answer=${default}
fi
echo ${answer}
}
yesno() {
local dflt question answer
question=$1
dflt=$2
while :; do
answer=$(ask "${question}" "${dflt}")
case "${answer}" in
[Yy]*) return 0;;
[Nn]*) return 1;;
esac
echo "Please answer yes or no."
done
}
make_account() {
local u g uid gid
u=$1
g=$2
uid=$3
gid=$4
if pw group show "${g}" >/dev/null 2>&1; then
echo "You already have a group \"${g}\", so I will use it."
else
echo "You need a group \"${g}\"."
if yesno "Would you like me to create it" y; then
pw groupadd ${g} -g ${gid} || exit
echo "Done."
else
echo "Please create it manually, and try again."
exit 1
fi
fi
if pw user show "${u}" >/dev/null 2>&1; then
echo "You already have a user \"${u}\", so I will use it."
else
echo "You need a user \"${u}\"."
if yesno "Would you like me to create it" y; then
pw useradd ${u} -u ${uid} -g ${g} -h - -d /nonexistant \
-s /sbin/nologin -c "Heartbeat cluster user" || exit
echo "Done."
else
echo "Please create it, and try again."
exit 1
fi
fi
}
delete_account() {
local u g
u=$1
g=$2
if yesno "Do you want me to remove group \"${g}\"" y; then
echo "Removing group \"${g}\""
pw groupdel -n ${g}
echo "Done."
fi
if yesno "Do you want me to remove user \"${u}\"" y; then
echo "Removing user \"${u}\""
pw userdel -n ${u}
echo "Done."
fi
}
case $2 in
PRE-INSTALL)
echo ""
user=hacluster
group=haclient
uid=275
gid=275
make_account ${user} ${group} $uid $gid
echo "Adding empty dirs and pid file."
test -d /var/lib/heartbeat/ckpt || \
install -d -m 755 /var/lib/heartbeat/ckpt
test -d /var/lib/heartbeat/ccm || \
install -d -m 750 -o ${user} -g ${group} /var/lib/heartbeat/ccm
test -d /var/lib/heartbeat/cores/root || \
install -d -m 700 /var/lib/heartbeat/cores/root
test -d /var/lib/heartbeat/cores/nobody || \
install -d -m 700 -o nobody /var/lib/heartbeat/cores/nobody
test -d /var/lib/heartbeat/cores/hacluster || \
install -d -m 700 -o ${user} /var/lib/heartbeat/cores/hacluster
test -d /var/lock/subsys || \
install -d -m 755 /var/lock/subsys
test -f /var/run/heartbeat.pid || \
install -m 644 -o ${user} -g ${group} /dev/null \
/var/run/heartbeat.pid
;;
DEINSTALL)
if ps -axc | grep -q heartbeat; then
if yesno "There are some heartbeat processes running. Shall I kill them" y
then
killall heartbeat
sleep 2
else
echo "OK ... I hope you know what you are doing."
fi
fi
delete_account hacluster haclient
echo "Removing runtime files"
if [ -d /var/lib/heartbeat ]; then
rm -r /var/lib/heartbeat
fi
if [ -f /var/lock/subsys/heartbeat ]; then
rm /var/lock/subsys/heartbeat
fi
if [ -f /var/run/heartbeat.pid ]; then
rm /var/run/heartbeat.pid
fi
;;
esac
|