X-Git-Url: http://ftp.carnet.hr/pub/carnet-debian/scm?a=blobdiff_plain;f=src%2Fscripts%2Fcheck_services;fp=src%2Fscripts%2Fcheck_services;h=ee5a9e6132bfd16cd285f21c0e02bb41c2306722;hb=1e70ff3fe998033fd93c8cd177082b8cd566d2ce;hp=0000000000000000000000000000000000000000;hpb=145b5a97d79f0305f0c6b56fc78437eac89ec94b;p=carnet-upgrade.git diff --git a/src/scripts/check_services b/src/scripts/check_services new file mode 100755 index 0000000..ee5a9e6 --- /dev/null +++ b/src/scripts/check_services @@ -0,0 +1,106 @@ +#!/bin/sh +# last update: 2004-12-20 +# last update: 2005-01-07 razlicita msg_finished poruka, ovisno o $queuename +# Zoran 'jelly' Dzelajlija +# Ivan 'ico' Rako + +# Load debconf stuff +. /usr/share/debconf/confmodule + +# Load nase funkcije +. /usr/share/carnet-upgrade/functions.sh +. /usr/share/carnet-upgrade/messages.sh +. /usr/share/carnet-upgrade/data.sh + +# provjeri da li su paketi iz prvog polja instalirani i to strpaj u debconf +cs_preupgrade () { + local services i + + for i in $(echo "$services_to_check" | sed 's/ */ /g'| awk -F' ' '{print $1}') + do + if pkg $i; then + if ! echo $services | grep -q $i; then + services="$services $i" + fi + fi + done + + if [ -n "$services" ]; then + db_set cn-upgrade/check-services "$services" + db_go || true + fi +} + +cs_pgrep () { + local failed_services + + while read line; do + # get service param from stdin + user=$(echo "$line" | awk -F ' ' '{print $2}') + psname=$(echo "$line" | awk -F ' ' '{print $3}') + nicename=$(echo "$line" | awk -F ' ' '{print $4}') + + # check if service is running + if ! pgrep -u $user -f "$psname" > /dev/null; then + failed_services="$failed_services, $nicename" + + fi + done + + echo ${failed_services#, } +} + +# uzmi iz debconfa instalirane servise, i provjeri rade li +cs_postupgrade () { + local services i failed_services msg_header + + case "$queuename" in + upgrade) msg_header="$msg_finished_upgrade" + ;; + *) + msg_header="$msg_finished" + ;; + esac + + db_get cn-upgrade/check-services || true + services="${RET// /|}" + + failed_services=$( + echo "$services_to_check" \ + | grep -E "^($services)" \ + | sed 's/ */ /g' \ + | cs_pgrep + ) + + if [ -n "$failed_services" ]; then + notice "$msg_header$msg_failed_services$failed_services" + else + notice "$msg_header" + fi +} + +# checkiraj da li je sto zapisano u debconf +cs_check () { + db_get cn-upgrade/check-services || true + debconf="$RET" + + if [ -n "$debconf" ]; then + exit 0 + else + exit 1 + fi +} + +case "$1" in +preupgrade) cs_preupgrade + ;; +postupgrade) cs_postupgrade + ;; +check) cs_check + ;; +*) echo "Usage: $0 (preupgrade|postupgrade|check)" + exit 1 + ;; +esac +exit 0 +