root/tags/oreon-1.3.2-b2/functions

Revision 963, 13.7 kB (checked in by wistof, 2 years ago)
Line 
1# -*-Shell-script-*-
2#
3# functions     This file contains functions to be used by Oreon install scripts
4#
5
6##
7## COLOR FUNCTIONS
8##
9
10
11RES_COL=60
12MOVE_TO_COL="echo -en \\033[${RES_COL}G"
13SETCOLOR_INFO="echo -en \\033[1;38m"
14SETCOLOR_SUCCESS="echo -en \\033[1;32m"
15SETCOLOR_FAILURE="echo -en \\033[1;31m"
16SETCOLOR_WARNING="echo -en \\033[1;33m"
17SETCOLOR_NORMAL="echo -en \\033[0;39m"
18
19OREON_CONF="/etc/oreon.conf"
20
21function  echo_info() {
22    echo -n "$1"
23    $MOVE_TO_COL
24    $SETCOLOR_INFO
25    echo -n "$2"
26    $SETCOLOR_NORMAL
27    echo -e "\r"
28}
29
30function  echo_success() {
31    echo -n "$1"
32    $MOVE_TO_COL
33    $SETCOLOR_SUCCESS
34    echo -n "$2"
35    $SETCOLOR_NORMAL
36    echo -e "\r"
37}
38
39function echo_failure() {
40    echo -n "$1"
41    $MOVE_TO_COL
42    $SETCOLOR_FAILURE
43    echo -n "$2"
44    $SETCOLOR_NORMAL
45    echo -e "\r"
46}
47
48function echo_passed() {
49    echo -n "$1"
50    $MOVE_TO_COL
51    $SETCOLOR_WARNING
52    echo -n "$2"
53    $SETCOLOR_NORMAL
54    echo -e "\r"
55}
56
57function echo_warning() {
58    echo -n "$1"
59    $MOVE_TO_COL
60    $SETCOLOR_WARNING
61    echo -n "$2"
62    $SETCOLOR_NORMAL
63    echo -e "\r"
64}
65
66##
67## FUNCTION
68##
69# Find the user and group nagios in nagios.cfg and ask if we don't find
70function find_user_nagios()
71{
72    NAGIOS_USER=`more $NAGIOS_ETC/nagios.cfg | grep ^nagios_user | cut -d = -f 2`
73
74    if [ -z "$NAGIOS_USER"  ] ; then
75        for fichier in $NAGIOS_ETC/*.cfg
76      do
77          if [ -f "$fichier" ]; then
78              NAGIOS_USER_TEMP=`more $fichier | grep ^nagios_user | cut -d = -f 2`
79              if [ -n "$NAGIOS_USER_TEMP" ]; then
80                  NAGIOS_USER=$NAGIOS_USER_TEMP
81    fi
82          fi
83        done
84    fi
85
86    if [ -z "$NAGIOS_USER"  ] ; then
87        #Nagios User
88        NAGIOS_USER="nagios"
89        echo_passed "Sorry, we don't found nagios user" "PASSED"
90        echo "Which is your nagios user ?"
91        echo -n "default to [$NAGIOS_USER]:"
92        read temp
93        test_answer NAGIOS_USER $temp
94        echo ""
95    else
96        echo_info "Finding Nagios user :" "$NAGIOS_USER"
97    fi
98
99}
100
101function find_group_nagios()
102{
103    NAGIOS_GROUP=`more $NAGIOS_ETC/nagios.cfg | grep ^nagios_group | cut -d = -f 2`
104
105    if [ -z "$NAGIOS_GROUP"  ] ; then
106        for fichier in $NAGIOS_ETC/*.cfg
107      do
108          if [ -f "$fichier" ]; then
109              NAGIOS_GROUP_TEMP=`more $fichier | grep ^nagios_group | cut -d = -f 2`
110              if [ -n "$NAGIOS_GROUP_TEMP" ]; then
111                  NAGIOS_GROUP=$NAGIOS_GROUP_TEMP
112              fi
113          fi
114    done
115    fi
116
117    if [ -z "$NAGIOS_GROUP"  ] ; then
118        #Nagios Group
119        NAGIOS_GROUP="nagiocmd"
120        echo_passed "Sorry, we don't found nagios group" "PASSED"
121        echo "Which is your nagios group ?"
122        echo -n "default to [$NAGIOS_GROUP]:"
123        read temp
124        test_answer NAGIOS_GROUP $temp
125        echo ""
126    else
127        echo_info "Finding Nagios group :" "$NAGIOS_GROUP"
128    fi
129
130}
131
132# Check the user and group nagios and create it if necessary
133
134function check_user_nagios()
135{
136        # Try to find nagios user/group from nagios.cfg file.
137    # If not, we ask...
138    find_user_nagios
139
140
141    nagios_user_grep=`grep $NAGIOS_USER /etc/passwd > /dev/null; echo $?`
142    if [ $nagios_user_grep == 0 ]; then
143        echo_success "Finding nagios user '$NAGIOS_USER' in /etc/passwd" "YES"
144    else
145        echo_warning "Finding nagios user '$NAGIOS_USER' in /etc/passwd" "NOT FOUND"
146                useradd -G $NAGIOS_GROUP $NAGIOS_USER
147                if [ $? == 0 ]; then
148                    echo_success  "Creating nagios user '$NAGIOS_USER'" "OK"
149                else
150                    echo_failure  "error creating nagios user '$NAGIOS_USER' check you environnement" "ERROR"
151                    exit
152                fi
153    fi
154}
155
156function check_group_nagios()
157{
158        # Try to find nagios user/group from nagios.cfg file.
159        # If not, we ask...
160    find_group_nagios
161
162    nagios_group_grep=`grep $NAGIOS_GROUP /etc/group > /dev/null; echo $?`
163    if [ $nagios_group_grep == 0 ]; then
164        echo_success "Finding nagios group '$NAGIOS_GROUP' in /etc/group" "YES"
165    else
166        echo_warning "Finding nagios group '$NAGIOS_GROUP' in /etc/group" "NOT FOUND"
167        groupadd $NAGIOS_GROUP
168        if [ $? == 0 ]; then
169      echo_success  "Creating nagios group '$NAGIOS_GROUP'" "OK"
170        else
171            echo_failure  "error creating group $NAGIOS_GROUP check you environnement" "ERROR"
172            exit
173        fi
174    fi
175}
176
177function check_group_nagiocmd()
178{
179    nagios_group=`grep nagiocmd /etc/group > /dev/null; echo $?`
180    if [ $nagios_group == 0 ]; then
181        echo_success "Finding nagios group 'nagiocmd' in /etc/group" "YES"
182    else
183        echo_warning "Finding nagios group 'nagiocmd' in /etc/group" "NO"
184        groupadd nagiocmd
185        if [ $? == 0 ]; then
186            echo_passed  "Creating nagios group 'nagiocmd'" "OK"
187        else
188            echo_failure  "error creating nagios group 'nagiocmd' check you environnement" "ERROR"
189            exit
190        fi
191    fi
192}
193
194
195function check_nagios_init_script()
196{
197    if [ -x "/etc/init.d/nagios" ]; then
198                NAGIOS_INIT_SCRIPT="/etc/init.d/nagios"
199    else if [ -x "/etc/init.d/nagios2" ] ; then
200                NAGIOS_INIT_SCRIPT="/etc/init.d/nagios2"
201    fi
202    fi
203
204    if [ -z "$NAGIOS_INIT_SCRIPT" ] ; then
205                #Nagios init script
206                NAGIOS_INIT_SCRIPT="/etc/init.d/nagios2"
207                echo_passed "Sorry, we don't found nagios init script" "PASSED"
208                echo "Which is your nagios init script ?"
209                echo -n "default is [$NAGIOS_INIT_SCRIPT]:"
210                read temp
211                test_answer NAGIOS_INIT_SCRIPT $temp
212                echo ""
213    else
214                echo_info "Finding nagios init script :" "$NAGIOS_INIT_SCRIPT"
215    fi
216
217}
218
219function check_httpd_directory()
220{
221    if test -d /etc/apache/conf ; then
222                DIR_APACHE="/etc/apache/conf"
223                DIR_APACHE_CONF="/etc/apache/conf.d"
224                HTPASSWD="htpasswd"
225    else if test -d /usr/local/apache2/conf ; then
226                DIR_APACHE="/usr/local/apache2/conf"
227                DIR_APACHE_CONF="/usr/local/apache2/conf"
228                HTPASSWD="htpasswd2"
229    else if test -d /etc/apache2 ; then
230                DIR_APACHE="/etc/apache2"
231                DIR_APACHE_CONF="/etc/apache2/conf.d"
232                HTPASSWD="htpasswd2"
233    else if test -d /etc/httpd/conf ; then
234                DIR_APACHE="/etc/httpd/conf"
235                DIR_APACHE_CONF="/etc/httpd/conf.d"
236                HTPASSWD="htpasswd"
237    else if test -d /usr/local/etc/apache ; then
238                DIR_APACHE="/usr/local/etc/apache"
239                DIR_APACHE_CONF="/usr/local/etc/apache/Includes"
240                HTPASSWD="htpasswd"
241    else if test -d /usr/local/etc/apache2 ; then
242                DIR_APACHE="/usr/local/etc/apache2"
243                DIR_APACHE_CONF="/usr/local/etc/apache2/Includes"
244                HTPASSWD="htpasswd"
245    fi
246    fi
247    fi
248    fi
249    fi
250    fi
251
252    if test -e $DIR_APACHE/apache2.conf ; then
253                APACHE_CONF="apache2.conf"
254    else if test -e $DIR_APACHE/commondhttpd.conf ; then
255                APACHE_CONF="commondhttpd.conf"
256    else if test -e $DIR_APACHE/httpd.conf ; then
257                APACHE_CONF="httpd.conf"
258    fi
259    fi
260    fi
261}
262
263function check_user_apache()
264{
265    WEB_USER=`more $DIR_APACHE/$APACHE_CONF | grep -w ^User | cut -d " " -f 2`
266
267    if [ -z "$WEB_USER"  ] ; then
268        for fichier in $DIR_APACHE/*
269          do
270          if [ -f "$fichier" ]; then
271              WEB_USER_TEMP=`more $fichier | grep -w ^User | cut -d " " -f 2`
272              if [ -n "$WEB_USER_TEMP" ]; then
273                  WEB_USER=$WEB_USER_TEMP
274              fi
275          fi
276        done
277    fi
278    echo_info "Finding Apache user :" "$WEB_USER"
279}
280
281function check_group_apache()
282{
283    WEB_GROUP=`more $DIR_APACHE/$APACHE_CONF | grep -w ^Group | cut -d " " -f 2`
284
285    if [ -z "$WEB_GROUP"  ] ; then
286        for fichier in $DIR_APACHE/*
287          do
288          if [ -f "$fichier" ]; then
289              WEB_GROUP_TEMP=`more $fichier | grep -w ^Group | cut -d " " -f 2`
290              if [ -n "$WEB_GROUP_TEMP" ]; then
291                  WEB_GROUP=$WEB_GROUP_TEMP
292              fi
293          fi
294        done
295    fi
296    echo_info "Finding Apache group :" "$WEB_GROUP"
297}
298
299function install_oreon_plugins()
300{
301# install plugins oreon
302    echo ""
303    if test -d $NAGIOS_PLUGIN ; then
304        echo_passed "$NAGIOS_PLUGIN already exists" "PASSED"
305    else
306        mkdir $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
307        echo_success "Creating Nagios Plugin Directory '$NAGIOS_PLUGIN'" "OK"
308    fi
309    echo "Preparing Oreon Plugins..."
310    if [ -n "$PLUGINS_DIR" ]; then
311        rm -f $PLUGINS_DIR/*.pl 2> /dev/null
312        rm -f $PLUGINS_DIR/*.pm 2> /dev/null
313        rm -f $PLUGINS_DIR/*.conf 2> /dev/null
314    else
315        rm -f *.pl 2> /dev/null
316        rm -f *.pm 2> /dev/null
317        rm -f *.conf 2> /dev/null
318    fi
319
320    if [ -n "$PLUGINS_DIR" ]; then
321        for fichier in ${PLUGINS_DIR}src/*
322          do
323          if [ -d "$fichier" ]; then
324              echo "$fichier is a directory"
325          else
326              filename=`echo $fichier  | sed -e 's|.*\/\(.*\)|\1|'`
327              echo "-> $filename"
328              `sed -e 's|@INSTALL_DIR_NAGIOS@|'"$INSTALL_DIR_NAGIOS"'|g' -e 's|@NAGIOS_ETC@|'"$NAGIOS_ETC"'|g' -e 's|@NAGIOS_PLUGINS@|'"$NAGIOS_PLUGIN"'|g' -e 's|@RRDTOOL_PERL_LIB@|'"$RRD_PERL"'|g' -e 's|@INSTALL_DIR_OREON@|'"$INSTALL_DIR_OREON"'|g'  "$fichier" > "$PLUGINS_DIR/$filename"`
329          fi
330        done
331        echo_success "Installing Oreon Plugins on '$NAGIOS_PLUGIN'" "OK"
332        cp $PLUGINS_DIR/*.pl $NAGIOS_PLUGIN
333    else
334        for fichier in src/*
335          do
336          if [ -d "$fichier" ]; then
337              echo "$fichier is a directory"
338          else
339              filename=`echo $fichier  | sed -e 's|.*\/\(.*\)|\1|'`
340              echo "    -> $filename"
341              `sed -e 's|@INSTALL_DIR_NAGIOS@|'"$INSTALL_DIR_NAGIOS"'|g' -e 's|@NAGIOS_ETC@|'"$NAGIOS_ETC"'|g' -e 's|@NAGIOS_PLUGINS@|'"$NAGIOS_PLUGIN"'|g' -e 's|@RRDTOOL_PERL_LIB@|'"$RRD_PERL"'|g' -e 's|@INSTALL_DIR_OREON@|'"$INSTALL_DIR_OREON"'|g'  "$fichier" > "$filename"`
342          fi
343        done
344        echo_success "Installing Oreon Plugins on '$NAGIOS_PLUGIN'" "OK"
345        cp *.pl $NAGIOS_PLUGIN
346    fi
347
348    chown -R $WEB_USER:$NAGIOS_GROUP $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
349    chmod 775 $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
350    chmod 775 $NAGIOS_PLUGIN/* >> $LOG_FILE 2>> $LOG_FILE
351
352    if [ -n "$PLUGINS_DIR/traps" ]; then
353        if [ -e "$NAGIOS_PLUGIN/traps" ]; then
354            echo "$NAGIOS_PLUGIN/traps already exists"
355        else
356            mkdir $NAGIOS_PLUGIN/traps
357        fi
358        for fichier in $PLUGINS_DIR/src/traps/*
359          do
360          filename=`echo $fichier  | sed -e 's|.*\/\(.*\)|\1|'`
361          echo "-> $filename"
362          `sed -e 's|@INSTALL_DIR_NAGIOS@|'"$INSTALL_DIR_NAGIOS"'|g' -e 's|@NAGIOS_ETC@|'"$NAGIOS_ETC"'|g' -e 's|@NAGIOS_PLUGINS@|'"$NAGIOS_PLUGIN"'|g' -e 's|@RRDTOOL_PERL_LIB@|'"$RRD_PERL"'|g' -e 's|@INSTALL_DIR_OREON@|'"$INSTALL_DIR_OREON"'|g'  "$fichier" > "$PLUGINS_DIR/$filename"`
363        done
364        cp $PLUGINS_DIR/src/traps/* $NAGIOS_PLUGIN/traps
365        chmod 775 $NAGIOS_PLUGIN/traps/* >> $LOG_FILE 2>> $LOG_FILE
366        echo "Installing Oreon Traps Plugins on "
367        echo_success "$NAGIOS_PLUGIN/traps'" "OK"
368
369    fi
370
371    if test -a $NAGIOS_PLUGIN/oreon.conf ; then
372        echo ""
373        echo_success "Finding Oreon Plugins configuration file 'oreon.conf' :" "OK"
374        echo "You already seem to have installed the plugins Oreon."
375        echo "Do you want overwrite this file ? You must regenerate this one from Oreon interface."
376        echo -n "[y/n], default to [n]:"
377        read temp
378        if [ -z $temp ];then
379            temp=n
380        fi
381    else
382        temp=y
383    fi
384
385    if [ $temp = "y" ];then
386        cp ${PLUGINS_DIR}oreon.conf $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
387        chmod 775 $NAGIOS_PLUGIN/oreon.conf >> $LOG_FILE 2>> $LOG_FILE
388        chown $WEB_USER:$WEB_GROUP $NAGIOS_PLUGIN/oreon.conf >> $LOG_FILE 2>> $LOG_FILE
389  fi
390
391    cp ${PLUGINS_DIR}oreon.pm $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
392    chmod 775 $NAGIOS_PLUGIN/oreon.pm >> $LOG_FILE 2>> $LOG_FILE
393}
394
395
396function install_oreon()
397{
398    echo ""
399    echo "Start Oreon Installation"
400    echo "------------------------"
401
402    if test -d $INSTALL_DIR_OREON ; then
403        echo_passed "Oreon Directory already exists" "PASSED"
404    else
405        mkdir $INSTALL_DIR_OREON >> $LOG_FILE 2>> $LOG_FILE
406        echo_success "Creating Oreon Directory '$INSTALL_DIR_OREON'" "OK"
407    fi
408
409    for directory in "filesGeneration" "filesUpload" "GPL_LIB" "log" "rrd" "www" "cron"
410      do
411      if test -d $directory ; then
412          cp -Rf $directory $INSTALL_DIR_OREON >> $LOG_FILE 2>> $LOG_FILE
413          echo_success "Copy '$directory'" "OK"
414      fi
415    done
416
417
418#  cp -Rf $SRC_OREON/* $INSTALL_DIR_OREON  >> $LOG_FILE 2>> $LOG_FILE
419    chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/ >> $LOG_FILE 2>> $LOG_FILE
420    chmod -R 775 $INSTALL_DIR_OREON >> $LOG_FILE 2>> $LOG_FILE
421    chmod -R 775 $INSTALL_DIR_OREON/* >> $LOG_FILE 2>> $LOG_FILE
422    chmod -R 775 $INSTALL_DIR_NAGIOS  >> $LOG_FILE 2>> $LOG_FILE
423    chmod -R 775 $INSTALL_DIR_NAGIOS/*  >> $LOG_FILE 2>> $LOG_FILE
424    if test -d /etc/nagios ; then
425        chmod -R 775 /etc/nagios >> $LOG_FILE 2>> $LOG_FILE
426    fi
427
428# rrdtool directory configuration
429
430    chown -R $NAGIOS_USER:$NAGIOS_GROUP $INSTALL_DIR_OREON/rrd >> $LOG_FILE 2>> $LOG_FILE
431    chmod 775 $INSTALL_DIR_OREON/rrd/*  >> $LOG_FILE 2>> $LOG_FILE
432
433# trafficMap data directory configuration
434
435#  chown -R $NAGIOS_USER:$NAGIOS_GROUP $INSTALL_DIR_OREON/include/trafficMap/average >> $LOG_FILE 2>> $LOG_FILE
436#  chmod 775 $INSTALL_DIR_OREON/include/trafficMap/average  >> $LOG_FILE 2>> $LOG_FILE
437#  chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/include/trafficMap/bg >> $LOG_FILE 2>> $LOG_FILE
438#  chmod 775 $INSTALL_DIR_OREON/include/trafficMap/bg  >> $LOG_FILE 2>> $LOG_FILE
439#  chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/include/trafficMap/png >> $LOG_FILE 2>> $LOG_FILE
440#  chmod 775 $INSTALL_DIR_OREON/include/trafficMap/png  >> $LOG_FILE 2>> $LOG_FILE
441
442    install_oreon_plugins
443
444    if test -d $NAGIOS_ETC ; then
445        echo_passed "$NAGIOS_ETC already exists" "PASSED"
446    else
447        mkdir  $NAGIOS_ETC  >> $LOG_FILE 2>> $LOG_FILE
448        echo_success "Creating '$NAGIOS_ETC'" "OK"
449    fi
450
451    chown -R $WEB_USER:$NAGIOS_GROUP $NAGIOS_ETC >> $LOG_FILE 2>> $LOG_FILE
452    chmod 775 $NAGIOS_ETC >> $LOG_FILE 2>> $LOG_FILE
453
454    if test -d $INSTALL_DIR_OREON/filesGeneration/nagiosCFG ; then
455        echo_passed "$INSTALL_DIR_OREON/filesGeneration/nagiosCFG already exists" "PASSED"
456    else
457        echo_success "Creating '$INSTALL_DIR_OREON/filesGeneration/nagiosCFG'" "OK"
458        mkdir $INSTALL_DIR_OREON/filesGeneration/nagiosCFG
459    fi
460
461    chmod 775 $INSTALL_DIR_OREON/filesGeneration >> $LOG_FILE 2>> $LOG_FILE
462    chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/filesGeneration >> $LOG_FILE 2>> $LOG_FILE
463
464    if test -d $INSTALL_DIR_OREON/filesUpload/nagiosCFG ; then
465        echo_passed "$INSTALL_DIR_OREON/filesUpload/nagiosCFG already exists" "PASSED"
466    else
467        echo_success "Creating '$INSTALL_DIR_OREON/filesUpload/nagiosCFG'" "OK"
468        mkdir $INSTALL_DIR_OREON/filesUpload/nagiosCFG
469    fi
470
471    chmod 775 $INSTALL_DIR_OREON/filesUpload/nagiosCFG >> $LOG_FILE 2>> $LOG_FILE
472    chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/filesUpload/nagiosCFG >> $LOG_FILE 2>> $LOG_FILE
473
474}
475
476
477
Note: See TracBrowser for help on using the browser.