SEARCH

Enter your search query in the box above ^, or use the forum search tool.

You are not logged in.

#1 2016-02-25 00:46:27

saljut7
#! CrunchBanger
Registered: 2013-10-31
Posts: 101

unattended-upgrades in combination with checkrestart?

#!/bin/bash
#
# Copyright (C) 2012 Sourcepole.ch
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
# MA 02110-1301 USA
#
# On Debian systems, a copy of the GNU General Public License may be
# found in /usr/share/common-licenses/GPL.


function help()
{
    cat<<-EOH
	$0 [-h|--help] [-n] [-a]
	Try to restart services, as indicated by checkrestart.
	Options:
	  -h, --help      ... help
	  -s, --simulate  ... simulate, do nothing, just print actions
	  -a              ... script is run by apt-get, add headers to output
	Return codes:
	  0 ... OK
	  1 ... error
	  2 ... warning
EOH
        exit 0
}

# Path to checkrestart
PATH_CHECKRESTART="/usr/sbin/checkrestart"

# Required binaries/scripts
NEED="egrep sed"

function warning()
{
    echo "! Warning: $@" 1>&2
    EXIT=2
}

function error()
{
    echo "!! Error: $@" 1>&2
    exit 1
}

function message()
{
    echo "$@"
}

function xeval()
{
    local cmd="$1"
    local ret_func="$2"
    local ret_str="Command \"$cmd\" returns"
    [ -z "$ret_func" ] && ret_func="error"
    message "$cmd"
    [ "$DRYRUN" == "1" ] &&  cmd=":"
    eval "$cmd" || $ret_func "$ret_str $?"
}

# starting exit code
EXIT=0

# arguments parsing
while [ "$#" != "0" ]; do
    case "$1" in
        -s|--simulate)
            DRYRUN="1"
           ;;
        -a)
            APTGET="1"
           ;;
        -h|--help)
            help
            ;;
    esac
    shift
done

# header to apt-get output
[ "$APTGET" == "1" ] && message "--- start $0"

# check paths
[ ! -x "$PATH_CHECKRESTART" ] &&
    error "Can not execute $PATH_CHECKRESTART"

# check required binaries/scripts
for bin in $NEED; do
    which "$bin" >& /dev/null || \
        error "Required binary/script not found $@"
done

# get output of checkrestart
output="`xeval $PATH_CHECKRESTART`"

# write output
message "$output"

# check output
[ -z "$output" ] &&
    error "Output of $PATH_CHECKRESTART was empty"

# count number of processes to restart
no_procs="`echo \"$output\" | \
    egrep '^Found [0-9]+ processes using old versions of upgraded files' | \
    sed 's/^Found \([0-9]*\).*/\1/'`"

# restart services
echo ""
[ "$no_procs" != "0" ] && message "Trying to restart services..."

IFS="
"
no_services=0
for service in `echo "$output" | sed "/^These are the init scripts:/,//!d" | egrep "^service "`; do
   xeval "$service" "warning"
   no_services="$((no_services+1))"
done

# check if no of processes is equal to no of services
# if [ "$no_services" != "$no_procs" ]; then
#     warning "Number of processes ($no_procs) is not equal to number of services ($no_services)"
# fi

# last messages
[ "$EXIT" == "0" ] && \
    message "Completed without problems" || \
    warning "Completed with some warnings see above"

# header to apt-get output
[ "$APTGET" == "1" ] && message "--- end $0"

exit $EXIT

Offline

Help fund CrunchBang, donate to the project!

#2 2016-02-28 13:55:37

Nili
#! Die Hard
From: 127.0.0.1
Registered: 2013-03-20
Posts: 811
Website

Re: unattended-upgrades in combination with checkrestart?

Offline

Board footer

Powered by FluxBB

Copyright © 2012 CrunchBang Linux.
Proudly powered by Debian. Hosted by Linode.
Debian is a registered trademark of Software in the Public Interest, Inc.
Server: bleh

Debian Logo