-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup_bb.sh
328 lines (269 loc) · 9.3 KB
/
setup_bb.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
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
#!/bin/sh
# 8/22/2005
# Randy Solberg
#
#6/13/08 - sgphilli - corrected script to reflect changes made to bb-hosts
#8/11/11 - Phil changed passwd and added reboot at end of script
#6/12/2012 - SDW - overhauled the script to add error handling, syntax checking,
# and make menu selections current.
#######FUNCTION DECLARATIONS##############################
if [[ -s /maint/scripts/common_functions.h ]]; then
source /maint/scripts/common_functions.h
elif [[ -s common_functions.h ]]; then
source common_functions.h
else
echo "Critical dependency failure: unable to locate common_functions.h"
exit
fi
###########MAIN EXECUTION START###########################
export LOGFILE=/var/log/install/configure_bb.log
if [[ ! -d /var/log/install ]]; then mkdir -p /var/log/install; fi
f_SetLogLevel 0
VTS="date +%Y%m%d%H%M%S"
# Begin logging
echo "`$VTS` : $0 log start" | $LOG1
FULLNAME=`f_GetRelease`
PRODUCT=`echo $FULLNAME | awk '{print $1}'`
RELEASE=`echo $FULLNAME | awk '{print $2}'`
UPDATE=`echo $FULLNAME | awk '{print $3}'`
echo "`$VTS` : System Info - KERNEL=$KERNEL DISTRO=$DISTRO RELEASE=$RELEASE UPDATE=$UPDATE" | $LOG1
# Create bbuser home directory and copy Big Brother
#mkdir -p /home/bbuser
tar -xzf /maint/scripts/tars/bbuser.tar.gz -C /home
chmod 755 /home/bbuser
cd /home/bbuser
#cp -rp /maint/scripts/bbuser/bb1* .
ln -s bb19c bb
chmod 755 /home/bbuser/bb19c/runbb.sh
chmod -R 755 /home/bbuser/bb19c/bin
chmod 755 /home/bbuser/bb19c/etc/*.sh*
chmod -R 755 /home/bbuser/bb19c/ext
# Add bbuser to the user list
echo "`$VTS` : Adding the Big Brother user and group" | $LOG1
if [[ `grep bbuser /etc/passwd | wc -l` -eq 1 ]]; then
groupadd -g 2521 bbuser 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
#usermod -g bbuser -p '\$1\$VZFP2KJe\$O09yiE9A7lKr9BNF.k/Rq0' bbuser
usermod -g bbuser -p '$1$VZFP2KJe$O09yiE9A7lKr9BNF.k/Rq0' bbuser 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
else
#useradd -u 2521 -d /home/bbuser -p '\$1\$VZFP2KJe\$O09yiE9A7lKr9BNF.k/Rq0' bbuser
useradd -u 2521 -d /home/bbuser -p '$1$VZFP2KJe$O09yiE9A7lKr9BNF.k/Rq0' bbuser 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
fi
echo -n " "; id bbuser 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
echo -n " "; groups bbuser 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
# Checking link and add log directory
echo ""
echo "Checking links..." 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
if [ -L /usr/log ] ; then
echo " /usr/log is a link -- good" 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
echo "Making bb logging directory..." 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
mkdir /usr/log/bb 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
chmod 777 /usr/log/bb 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
else
echo " /usr/log is not a link to /var/log -- fix it and rerun this script! " 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
exit 1
fi
# Getting site info from user
# BB Site Info will be derrived from the /usr/eos/data/expcfg file
# and checked against /maint/scripts/sitelist.cfg
EXPCFG=/usr/eos/data/expcfg
#SITELIST=sitelist.cfg
SITELIST=/maint/scripts/sitelist.cfg
if [[ ! -s $EXPCFG ]]; then
echo "Warning: site number has not been set. Attempting to set it now..." 2>&1 | sed 's/^/'"`$VTS` :"'/g' | $LOG1
if [[ ! -s $SITELIST ]]; then
echo "Unable to locate the sitelist.cfg file. The site number can be set"
echo "manually by writing it to $EXPCFG. Please set it and re-run this"
echo "script."
echo "`$VTS` : $SITELIST is not accessible, site number must be set manually" | $LOG1
exit
fi
echo "Please choose a site number from the following list:"
echo ""
f_MakeSiteMenu $SITELIST
VC1=NO
while [[ $VC1 != YES ]]; do
echo ""
read -p "Please enter the site number: " SITENUM
echo "`$VTS` : User Input [site number] provided answer \"$SITENUM\"" >> $LOGFILE
if [[ -z `grep "^${SITENUM}:" $SITELIST` ]]; then
echo "`$VTS` : Invalid User Input [site number] provided answer \"$SITENUM\"" >> $LOGFILE
read -p "\"$SITENUM\" is not a valid selection. Press Enter to try again. " JUNK
tput cuu1; tput el; tput cuu1; tput el
unset SITENUM
else
VC1=YES
fi
done
else
SITENUM=`cat $EXPCFG | awk '{print $NF}'`
if [[ -s $SITELIST ]]; then
if [[ -z `grep "^${SITENUM}:" $SITELIST` ]]; then
echo "`$VTS` : Warning: $SITENUM does not match an entry in $SITELIST and may be invalid." | $LOG1
echo ""
sleep 4
fi
fi
fi
echo ""
echo "Setting site number to $SITENUM"
echo "`$VTS` : Setting site number to $SITENUM" | $LOG1
# Attempt to read the BU from the SSO so we don't have to prompt the user
if [[ -s /etc/sso ]] && [[ -n `grep "^BU=" /etc/sso` ]]; then
BU=`grep "^BU=" /etc/sso | awk -F'=' '{print $2}'`
fi
if [[ -z $BU ]]; then
echo ""
echo "Which Business Unit owns the server?"
echo ""
echo " 1) Corporate (eitcorp)"
echo " 2) Intercall (intercall)"
echo " 3) WIC (wic)"
echo " 4) WBS (wbs)"
echo " 5) WAN (wan)"
echo ""
VC2=NO
while [[ $VC2 != YES ]]; do
read -p "Select 1-5: " BUNUM
echo "`$VTS` : User Input [Business Unit 1=CORP 2=ITC 3=WIC 4=WBS 5=WAN] provided answer \"$BNUM\"" >> $LOGFILE
if [[ $BUNUM -lt 1 ]] || [[ $BUNUM -gt 5 ]]; then
echo "\"$BUNUM\" is not a valid choice, please select 1-5."
echo "`$VTS` : Invalid User Input [Business Unit 1=CORP 2=ITC 3=WIC 4=WBS 5=WAN] provided answer \"$BNUM\"" >> $LOGFILE
read -p "Press Enter to continue. " JUNK
unset BUNUM
tput cuu1; tput el; tput cuu1; tput el; tput cuu1; tput el
else
VC2=YES
fi
done
case $BUNUM in
1) BU=eitcorp
;;
2) BU=intercall
;;
3) BU=wic
;;
4) BU=wbs
;;
5) BU=wan
;;
*) echo "`$VTS` : Business Unit validation failure, please debug this script." | $LOG1
exit
;;
esac
fi
# Set up the BBHOSTS file
# If a bbohsts file already exists, remove it so the re-configured system will
# start in "off" mode
if [[ -f ~bbuser/bb/etc/bb-hosts ]]; then
rm -f ~bbuser/bb/etc/bb-hosts
fi
BBHOSTFILE=~bbuser/bb/etc/bb-hosts.off
LIP=`f_FindPubIP`
LNAME=`hostname -s`
DSERVHN="bbserv${sitenum}.wic.west.com"
DSERVIP=`/usr/bin/host $DSERVHN | grep "has address" | awk '{print $NF}'`
if [[ -z $DSERVIP ]]; then
DSERVHN=`grep ^${SITENUM}: $SITELIST | awk -F':' '{print $3}'`
DSERVIP=`grep ^${SITENUM}: $SITELIST | awk -F':' '{print $4}'`
fi
echo "$DSERVIP $DSERVHN # BBNET BBDISPLAY BBPAGER http://$DSERVHN/ telnet" > $BBHOSTFILE
echo "$LIP $LNAME # telnet" >> $BBHOSTFILE
# Setting permissions on bbuser
cd /home
chown -R bbuser:bbuser ~bbuser
# Setting ACLs on bbuser
chmod -R u+w /home/bbuser/bb
# inittab is deprecated in RHEL6, and Big Brother will run fine with an rcscript instead
echo "`$VTS` : Installing rc script for Big Brother" | $LOG1
if [[ -z `grep 'Big Brother is now' /etc/inittab` ]]; then
echo "# DO NOT ADD Big Brother to inittab" >> /etc/inittab
echo "# Big Brother is now started/stopped with /etc/init.d/runbb" >> /etc/inittab
fi
# Create and activate the "runbb" initscript
cat << EOF > /etc/init.d/runbb
#!/bin/sh
# the following is the LSB init header
#
### BEGIN INIT INFO
# Provides: runbb
# Required-Start: network
# Required-Stop: network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: stop/start Big Brother daemon
# Description: This is a script for starting and stopping the Big Brother daemon
### END INIT INFO
# the following is chkconfig init header
#
# runbb: stop/start bb daemon
#
# chkconfig: 345 99 01
# description: This is a script for starting and stopping the runbb daemon
#
RUNASUSER=bbuser
export UEXEC="su \$RUNASUSER -c 'cd /home/bbuser/bb; ./runbb.sh start'"
export DEXEC="su \$RUNASUSER -c 'cd /home/bbuser/bb; ./runbb.sh stop'"
export BBHOSTS=/home/bbuser/bb/etc/bb-hosts
f_Usage() {
echo "Usage: \$0 [start|stop|restart]"
}
f_Start () {
echo "Starting \$0"
if [[ ! -s \$BBHOSTS ]]; then
echo ""
echo "Big Brother has not been enabled yet."
echo ""
echo "Big Brother can usually be enabled by renaming:"
echo ""
echo " \$BBHOSTS.off"
echo " TO"
echo " \$BBHOSTS"
echo ""
else
echo \$UEXEC | /bin/bash
fi
}
f_Stop () {
if [[ ! -s \$BBHOSTS ]]; then
echo "Big Brother is not enabled."
else
echo "Stopping \$0"
echo \$DEXEC | /bin/bash
# The runbb.sh script does not properly kill off nohup children,
# the following logic will kill off anything owned by bbuser running with init as the ppid
for p in \`ps -u \$RUNASUSER -o ppid,pid | awk '\$1 == 1 {print $2}'\`; do
/bin/kill -9 \$p 2>&1 | > /dev/null
done
fi
}
if test \$# != 1; then
f_Usage
fi
case "\$1" in
--help) f_Usage
RETVAL=0
;;
start) f_Start
RETVAL=\$?
;;
stop) f_Stop
RETVAL=\$?
;;
restart) f_Stop
f_Start
RETVAL=\$?
;;
*) f_Usage
RETVAL=0
;;
esac
exit \$RETVAL
EOF
chmod 755 /etc/init.d/runbb
#/bin/cp /maint/scripts/rcscripts/runbb /etc/init.d/runbb
/sbin/chkconfig runbb on
/etc/init.d/runbb start 2>&1 | >> /dev/null
#end bb install
#echo ""
echo "`$VTS` : Big Brother installation has been completed." | $LOG1
exit 0