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