ee5a9e6132bfd16cd285f21c0e02bb41c2306722
[carnet-upgrade.git] / usr / share / carnet-upgrade / scripts / check_services
1 #!/bin/sh
2 # last update: 2004-12-20
3 # last update: 2005-01-07 razlicita msg_finished poruka, ovisno o $queuename
4 # Zoran 'jelly' Dzelajlija <jelly@srce.hr>
5 # Ivan 'ico' Rako <irako@srce.hr>
6
7 # Load debconf stuff
8 . /usr/share/debconf/confmodule
9
10 # Load nase funkcije
11 . /usr/share/carnet-upgrade/functions.sh
12 . /usr/share/carnet-upgrade/messages.sh
13 . /usr/share/carnet-upgrade/data.sh
14
15 # provjeri da li su paketi iz prvog polja instalirani i to strpaj u debconf
16 cs_preupgrade () {
17   local services i
18
19   for i in $(echo "$services_to_check" | sed 's/                */      /g'| awk -F'    ' '{print $1}')
20   do
21     if pkg $i; then
22       if ! echo $services | grep -q $i; then
23         services="$services $i"
24       fi
25     fi
26   done
27
28   if [ -n "$services" ]; then
29     db_set cn-upgrade/check-services "$services"
30     db_go || true
31   fi
32 }
33
34 cs_pgrep () {
35     local failed_services
36
37     while read line; do
38         # get service param from stdin
39         user=$(echo "$line" | awk -F '  ' '{print $2}')
40         psname=$(echo "$line" | awk -F '        ' '{print $3}')
41         nicename=$(echo "$line" | awk -F '      ' '{print $4}')
42
43         # check if service is running
44         if ! pgrep -u $user -f "$psname" > /dev/null; then
45             failed_services="$failed_services, $nicename"
46
47         fi
48     done
49
50     echo ${failed_services#, }
51 }
52
53 # uzmi iz debconfa instalirane servise, i provjeri rade li
54 cs_postupgrade () {
55   local services i failed_services msg_header
56
57   case "$queuename" in
58     upgrade) msg_header="$msg_finished_upgrade"
59       ;;
60     *)
61       msg_header="$msg_finished"
62       ;;
63   esac
64
65   db_get cn-upgrade/check-services || true
66   services="${RET// /|}"
67
68   failed_services=$(
69     echo "$services_to_check" \
70     | grep -E "^($services)" \
71     | sed 's/           */      /g' \
72     | cs_pgrep
73   )
74
75   if [ -n "$failed_services" ]; then
76     notice "$msg_header$msg_failed_services$failed_services"
77   else
78     notice "$msg_header"
79   fi
80 }
81
82 # checkiraj da li je sto zapisano u debconf
83 cs_check () {
84   db_get cn-upgrade/check-services || true
85   debconf="$RET"
86
87   if [ -n "$debconf" ]; then
88     exit 0
89   else
90     exit 1
91   fi
92 }
93
94 case "$1" in
95 preupgrade)     cs_preupgrade
96         ;;
97 postupgrade)    cs_postupgrade
98         ;;
99 check)  cs_check
100         ;;
101 *)      echo "Usage: $0 (preupgrade|postupgrade|check)"
102         exit 1 
103         ;;
104 esac
105 exit 0
106