#!/bin/bash STORE=/var/lib/carnet-upgrade/check-services # Load nase funkcije . /usr/share/carnet-upgrade/data.sh . /usr/share/carnet-upgrade/messages.sh . /usr/share/carnet-upgrade/functions.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 services=${services# } if [ -n "$services" ]; then echo "$services" > $STORE 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 services=$(test -f $STORE && cat $STORE) services="${services// /|}" 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 cs_check () { services=$(test -f $STORE && cat $STORE) if [ -n "$services" ]; then exit 0 else exit 1 fi } # prikazi sto je zapisano cs_show () { services=$(test -f $STORE && cat $STORE) echo "$services" } case "$1" in preupgrade) cs_preupgrade ;; postupgrade) cs_postupgrade ;; check) cs_check ;; show) cs_show ;; *) echo "Usage: $0 (preupgrade|postupgrade|check|show)" exit 1 ;; esac exit 0