root/tags/oreon-1.3-RC3-1/functions

Revision 136, 12.9 kB (checked in by cfacon, 2 years ago)

add cron dir in function file

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
194function check_httpd_directory()
195{
196    if test -d /etc/apache/conf ; then
197        DIR_APACHE="/etc/apache/conf"
198        DIR_APACHE_CONF="/etc/apache/conf.d"
199        HTPASSWD="htpasswd"
200    else if test -d /usr/local/apache2/conf ; then
201        DIR_APACHE="/usr/local/apache2/conf"
202        DIR_APACHE_CONF="/usr/local/apache2/conf"
203        HTPASSWD="htpasswd2"
204    else if test -d /etc/apache2 ; then
205        DIR_APACHE="/etc/apache2"
206        DIR_APACHE_CONF="/etc/apache2/conf.d"
207        HTPASSWD="htpasswd2"
208    else if test -d /etc/httpd/conf ; then
209        DIR_APACHE="/etc/httpd/conf"
210        DIR_APACHE_CONF="/etc/httpd/conf.d"
211        HTPASSWD="htpasswd"
212    fi
213    fi
214    fi
215    fi
216   
217    if test -e $DIR_APACHE/apache2.conf ; then
218        APACHE_CONF="apache2.conf"
219    else if test -e $DIR_APACHE/commondhttpd.conf ; then
220        APACHE_CONF="commondhttpd.conf"
221    else if test -e $DIR_APACHE/httpd.conf ; then
222        APACHE_CONF="httpd.conf"
223    fi
224    fi
225    fi
226}
227
228function check_user_apache()
229{
230    WEB_USER=`more $DIR_APACHE/$APACHE_CONF | grep ^User | cut -d " " -f 2`
231   
232    if [ -z "$WEB_USER"  ] ; then
233        for fichier in $DIR_APACHE/*
234          do
235          if [ -f "$fichier" ]; then
236              WEB_USER_TEMP=`more $fichier | grep ^User | cut -d " " -f 2`
237              if [ -n "$WEB_USER_TEMP" ]; then
238                  WEB_USER=$WEB_USER_TEMP
239              fi
240          fi
241        done
242    fi
243    echo_info "Finding Apache user :" "$WEB_USER"
244}
245
246function check_group_apache()
247{
248    WEB_GROUP=`more $DIR_APACHE/$APACHE_CONF | grep ^Group | cut -d " " -f 2`
249   
250    if [ -z "$WEB_GROUP"  ] ; then
251        for fichier in $DIR_APACHE/*
252          do
253          if [ -f "$fichier" ]; then
254              WEB_GROUP_TEMP=`more $fichier | grep ^Group | cut -d " " -f 2`
255              if [ -n "$WEB_GROUP_TEMP" ]; then
256                  WEB_GROUP=$WEB_GROUP_TEMP
257              fi
258          fi
259        done
260    fi
261    echo_info "Finding Apache group :" "$WEB_GROUP"
262}
263
264function install_oreon_plugins()
265{
266# install plugins oreon
267    echo ""
268    if test -d $NAGIOS_PLUGIN ; then
269        echo_passed "$NAGIOS_PLUGIN already exists" "PASSED"
270    else
271        mkdir $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
272        echo_success "Creating Nagios Plugin Directory '$NAGIOS_PLUGIN'" "OK"
273    fi
274    echo "Preparing Oreon Plugins..."
275    if [ -n "$PLUGINS_DIR" ]; then
276        rm -f $PLUGINS_DIR/*.pl 2> /dev/null
277        rm -f $PLUGINS_DIR/*.pm 2> /dev/null
278        rm -f $PLUGINS_DIR/*.conf 2> /dev/null
279    else
280        rm -f *.pl 2> /dev/null
281        rm -f *.pm 2> /dev/null
282        rm -f *.conf 2> /dev/null
283    fi
284   
285    if [ -n "$PLUGINS_DIR" ]; then
286        for fichier in $PLUGINS_DIR/src/*
287          do
288          if [ -d "$fichier" ]; then
289              echo "$fichier is a directory"
290          else
291              filename=`echo $fichier  | sed -e 's|.*\/\(.*\)|\1|'`
292              echo "-> $filename"
293              `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"`
294          fi
295        done
296        echo_success "Installing Oreon Plugins on '$NAGIOS_PLUGIN'" "OK"
297        cp $PLUGINS_DIR/*.pl $NAGIOS_PLUGIN
298    else
299        for fichier in src/*
300          do
301          if [ -d "$fichier" ]; then
302              echo "$fichier is a directory"
303          else
304              filename=`echo $fichier  | sed -e 's|.*\/\(.*\)|\1|'`
305              echo "    -> $filename"
306              `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"`
307          fi
308        done
309        echo_success "Installing Oreon Plugins on '$NAGIOS_PLUGIN'" "OK"
310        cp *.pl $NAGIOS_PLUGIN
311    fi
312   
313    chown -R $WEB_USER:$NAGIOS_GROUP $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
314    chmod 775 $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
315    chmod 775 $NAGIOS_PLUGIN/* >> $LOG_FILE 2>> $LOG_FILE
316
317    if [ -n "$PLUGINS_DIR/traps" ]; then
318        if [ -e "$NAGIOS_PLUGIN/traps" ]; then
319            echo "$NAGIOS_PLUGIN/traps already exists"
320        else
321            mkdir $NAGIOS_PLUGIN/traps
322        fi
323        for fichier in $PLUGINS_DIR/src/traps/*
324          do
325          filename=`echo $fichier  | sed -e 's|.*\/\(.*\)|\1|'`
326          echo "-> $filename"
327          `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"`
328        done
329        cp $PLUGINS_DIR/src/traps/* $NAGIOS_PLUGIN/traps
330        echo_success "Installing Oreon Traps Plugins on '$NAGIOS_PLUGIN/traps'" "OK"
331        chmod 775 $NAGIOS_PLUGIN/traps/* >> $LOG_FILE 2>> $LOG_FILE
332    fi
333   
334    if test -a $NAGIOS_PLUGIN/oreon.conf ; then
335        echo ""
336        echo_success "Finding Oreon Plugins configuration file 'oreon.conf' :" "OK"
337        echo "You already seem to have installed the plugins Oreon."
338        echo "Do you want overwrite this file ? You must regenerate this one from Oreon interface."
339        echo -n "[y/n], default to [n]:"
340        read temp
341        if [ -z $temp ];then
342            temp=n
343        fi
344    else
345        temp=y
346    fi
347   
348    if [ $temp = "y" ];then
349        cp ${PLUGINS_DIR}oreon.conf $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
350        chmod 775 $NAGIOS_PLUGIN/oreon.conf >> $LOG_FILE 2>> $LOG_FILE
351        chown $WEB_USER:$WEB_GROUP $NAGIOS_PLUGIN/oreon.conf >> $LOG_FILE 2>> $LOG_FILE
352  fi
353   
354    cp ${PLUGINS_DIR}oreon.pm $NAGIOS_PLUGIN >> $LOG_FILE 2>> $LOG_FILE
355    chmod 775 $NAGIOS_PLUGIN/oreon.pm >> $LOG_FILE 2>> $LOG_FILE
356}
357
358
359function install_oreon()
360{
361    echo ""
362    echo "Start Oreon Installation"
363    echo "------------------------"
364   
365    if test -d $INSTALL_DIR_OREON ; then
366        echo_passed "Oreon Directory already exists" "PASSED"
367    else
368        mkdir $INSTALL_DIR_OREON >> $LOG_FILE 2>> $LOG_FILE
369        echo_success "Creating Oreon Directory '$INSTALL_DIR_OREON'" "OK"
370    fi
371   
372    for directory in "filesGeneration" "filesUpload" "GPL_LIB" "log" "rrd" "www" "cron"
373      do
374      if test -d $directory ; then
375          cp -Rf $directory $INSTALL_DIR_OREON >> $LOG_FILE 2>> $LOG_FILE
376          echo_success "Copy '$directory'" "OK"
377      fi
378    done
379   
380   
381#  cp -Rf $SRC_OREON/* $INSTALL_DIR_OREON  >> $LOG_FILE 2>> $LOG_FILE
382    chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/ >> $LOG_FILE 2>> $LOG_FILE
383    chmod -R 775 $INSTALL_DIR_OREON >> $LOG_FILE 2>> $LOG_FILE
384    chmod -R 775 $INSTALL_DIR_OREON/* >> $LOG_FILE 2>> $LOG_FILE
385    chmod -R 775 $INSTALL_DIR_NAGIOS  >> $LOG_FILE 2>> $LOG_FILE
386    chmod -R 775 $INSTALL_DIR_NAGIOS/*  >> $LOG_FILE 2>> $LOG_FILE
387    if test -d /etc/nagios ; then
388        chmod -R 775 /etc/nagios >> $LOG_FILE 2>> $LOG_FILE
389    fi
390   
391# rrdtool directory configuration
392   
393    chown -R $NAGIOS_USER:$NAGIOS_GROUP $INSTALL_DIR_OREON/rrd >> $LOG_FILE 2>> $LOG_FILE
394    chmod 775 $INSTALL_DIR_OREON/rrd/*  >> $LOG_FILE 2>> $LOG_FILE
395   
396# trafficMap data directory configuration
397   
398#  chown -R $NAGIOS_USER:$NAGIOS_GROUP $INSTALL_DIR_OREON/include/trafficMap/average >> $LOG_FILE 2>> $LOG_FILE
399#  chmod 775 $INSTALL_DIR_OREON/include/trafficMap/average  >> $LOG_FILE 2>> $LOG_FILE
400#  chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/include/trafficMap/bg >> $LOG_FILE 2>> $LOG_FILE
401#  chmod 775 $INSTALL_DIR_OREON/include/trafficMap/bg  >> $LOG_FILE 2>> $LOG_FILE
402#  chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/include/trafficMap/png >> $LOG_FILE 2>> $LOG_FILE
403#  chmod 775 $INSTALL_DIR_OREON/include/trafficMap/png  >> $LOG_FILE 2>> $LOG_FILE
404   
405    install_oreon_plugins
406   
407    if test -d $NAGIOS_ETC ; then
408        echo_passed "$NAGIOS_ETC already exists" "PASSED"
409    else
410        mkdir  $NAGIOS_ETC  >> $LOG_FILE 2>> $LOG_FILE
411        echo_success "Creating '$NAGIOS_ETC'" "OK"
412    fi
413   
414    chown -R $WEB_USER:$NAGIOS_GROUP $NAGIOS_ETC >> $LOG_FILE 2>> $LOG_FILE
415    chmod 775 $NAGIOS_ETC >> $LOG_FILE 2>> $LOG_FILE
416   
417    if test -d $INSTALL_DIR_OREON/filesGeneration/nagiosCFG ; then
418        echo_passed "$INSTALL_DIR_OREON/filesGeneration/nagiosCFG already exists" "PASSED"
419    else
420        echo_success "Creating '$INSTALL_DIR_OREON/filesGeneration/nagiosCFG'" "OK"
421        mkdir $INSTALL_DIR_OREON/filesGeneration/nagiosCFG
422    fi
423   
424    chmod 775 $INSTALL_DIR_OREON/filesGeneration >> $LOG_FILE 2>> $LOG_FILE
425    chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/filesGeneration >> $LOG_FILE 2>> $LOG_FILE
426   
427    if test -d $INSTALL_DIR_OREON/filesUpload/nagiosCFG ; then
428        echo_passed "$INSTALL_DIR_OREON/filesUpload/nagiosCFG already exists" "PASSED"
429    else
430        echo_success "Creating '$INSTALL_DIR_OREON/filesUpload/nagiosCFG'" "OK"
431        mkdir $INSTALL_DIR_OREON/filesUpload/nagiosCFG
432    fi
433   
434    chmod 775 $INSTALL_DIR_OREON/filesUpload/nagiosCFG >> $LOG_FILE 2>> $LOG_FILE
435    chown -R $WEB_USER:$WEB_GROUP $INSTALL_DIR_OREON/filesUpload/nagiosCFG >> $LOG_FILE 2>> $LOG_FILE
436   
437}
438
439
440
Note: See TracBrowser for help on using the browser.