#!/bin/bash preCmds=('hostname') cmds=() postCmds=('sync') for mp in '/' '/boot'; do mountpoint -q "${mp}" || continue mount \ | cut -d' ' -f3,6 \ | grep "^${mp}\s" \ | cut -d' ' -f2 \ | grep -qwF 'ro' || continue [ "${mp}" = '/boot' ] && [ -d '#ETCDIR#/ports' ] && continue preCmds+=('mount -o remount,rw '"${mp}") postCmds+=('mount -o remount,ro '"${mp}") done if command -v check-kernel >/dev/null; then postCmds+=('check-kernel -r') fi . #ETCDIR#/update-me.conf if ! command -v sudo >/dev/null; then hasSudo=false fi if [ ! "$(whoami)" == "root" ]; then if ! "${hasSudo}"; then hostname err=1 maxCount=3 while [ ${err} -eq 1 ] && [ ${maxCount} -gt 0 ] do su -c "$(readlink -f "$0") || exit 2" err=$? maxCount=$[${maxCount} - 1] done exit ${err} fi pre='sudo' else pre='' fi if [ ${#cmds[@]} -eq 0 ] then if [ -d '#ETCDIR#/pacman.d' ] then cmds=('pacman -Syu' 'pacdiff') elif [ -d '#ETCDIR#/ports' ] then cmds=('ports -u' 'prt-get --install-scripts sysup' 'rejmerge' 'revdep') elif [ -d '#ETCDIR#/apt' ] then cmds=('apt-get update' 'apt-get upgrade' 'apt-get dist-upgrade' 'apt-get autoremove') else >&2 echo 'Unknown distribution!' exit 1 fi fi for cmd in "${preCmds[@]}" do if [ -z "${cmd%%check-kernel*}" ] \ || [ -z "${cmd%%mount*}" ]; then ${pre} ${cmd} else ${cmd} fi err=$? if [ ${err} -ne 0 ] then >&2 echo 'Fehler' read s exit ${err} fi done for cmd in "${cmds[@]}" do ${pre} ${cmd} err=$? if [ ${err} -ne 0 ] then >&2 echo 'Fehler' read s exit ${err} fi done for cmd in "${postCmds[@]}" do if [ -z "${cmd%%check-kernel*}" ] \ || [ -z "${cmd%%mount*}" ]; then ${pre} ${cmd} else ${cmd} fi err=$? if [ ${err} -ne 0 ] then >&2 echo 'Fehler' read s exit ${err} fi done >&2 echo 'Erfolg' read s exit 0