#! /bin/bash # upgrade lenny -> squeeze fuer kiru/sirius set -u set -e LANG=C LC_ALL=C #SUFFIX=`date +%F` SUFFIX=lenny-squeeze DPKG_OPTIONS="" #export UCF_FORCE_CONFFOLD=1 #DPKG_OPTIONS='-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" -f -m --force-yes' #DPKG_OPTIONS='-o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold' #if [ -f $DIRNAME/config.dat ]; then # export DEBCONF_DB_FALLBACK=File{$DIRNAME/config.dat} # export DEBCONF_DB_OVERRIDE=File{$DIRNAME/config.dat} #fi #export DEBIAN_FRONTEND=noninteractive CHECK_SERVICES=${CHECK_SERVICES:-true} RESTART_SERVICES=${RESTART_SERVICES:-true} EXCLUDE_SERVICES='' GARNIX_CODE=${GARNIX_CODE:-1} #DIRNAME=`dirname $0` DIRNAME=$(dirname `readlink -f $0`) if [ "${DIRNAME%/*}" != /root ] ; then echo "wir sollten lieber ein Verzeichnis unter /root anlegen" exit $GARNIX_CODE elif [ `cat /etc/debian_version | cut -b1` = "6" ] ; then echo "`hostname` ist schon squeeze" #exit $GARNIX_CODE exit 0 elif pgrep -l apt-get || pgrep -l aptitude ; then echo "laeuft schon einer" exit $GARNIX_CODE # schon im Host-Skript #elif [ -f RUNNING ]; then # echo "File RUNNING existiert" # exit $GARNIX_CODE else touch RUNNING fi #trap 'rm -f RUNNING' EXIT exit_status=0 grep -q /etc/bash_completion /root/.bashrc || echo . /etc/bash_completion >> /root/.bashrc apt-get -y --allow-unauthenticated=true install vo lihas-keyring dpkg --get-selections '*' > $DIRNAME/dpkg-get-selections #cp -axi /etc "$DIRNAME" echo "tar -czf $DIRNAME/etc-`date +%F`.tgz /etc ..." tar -czf $DIRNAME/etc-`date +%F`.tgz /etc find /etc -name '*.*-dist' -exec cp -v '{}' '{}'-lenny \; # find /etc ..vo.. repos="ftp.de.debian.org" #repos="approx:9999" cat << EOF > /etc/apt/sources.list deb http://$repos/debian/ squeeze main contrib non-free deb http://$repos/debian-security/ squeeze/updates main contrib non-free deb http://$repos/debian/ squeeze-updates main contrib non-free deb http://$repos/debian/ squeeze-proposed-updates main contrib non-free #deb http://$repos/debian-backports squeeze-backports main contrib non-free EOF echo deb http://ftp.lihas.de/debian/ stable main > /etc/apt/sources.list.d/lihas.list rm -f /etc/apt/sources.list.d/lihas cat << EOF > /etc/apt/preferences Package: * Pin: release a=squeeze-backports Pin-Priority: 200 Package: * Pin: release n=sid Pin-Priority: 98 Package: * Pin: release a=wheezy Pin-Priority: 99 Package: * Pin: release a=squeeze Pin-Priority: 510 Package: * Pin: release n=squeeze-proposed-updates Pin-Priority: 510 Package: * Pin: release n=squeeze-updates Pin-Priority: 510 Package: * Pin: release a=experimental Pin-Priority: 9 EOF ##### Funktionen zur Diensteueberpruefung nach Upgrade ##### search_running_services_func () { ps cft '?' | grep -v '\_' | awk '{print $NF}' | sort -u return 0 } find_missing_services_func () { sleep 2 services_after=`search_running_services_func` services_diff=`diff <(echo "$services_before") <(echo "$services_after")` || true missing_servs=$(echo "$services_diff" | grep '^<' | cut -d' ' -f2 | while read s; do [ -z "$s" ] && continue for e in $EXCLUDE_SERVICES; do [ "$s" = "${e:0:15}" ] && continue 2 done echo "$s" done ) return 0 } ### Funktionen f. Konfigurationsprobleme ### apache_config_func () { if ! pgrep -x apache2 && [ -f /etc/apache2/envvars.dpkg-dist ] ; then cp -av /etc/apache2/envvars /etc/apache2/envvars.$SUFFIX && cat /etc/apache2/envvars.dpkg-dist > /etc/apache2/envvars && echo -e "\n##### Upgrade $SUFFIX #####\n" >> /etc/apache2/envvars && cat /etc/apache2/envvars.$SUFFIX | grep '^[^#]' >> /etc/apache2/envvars /etc/init.d/apache2 restart sleep 1 fi } php5_config_func () { cp -av /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.$SUFFIX && echo -e "##### Upgrade $SUFFIX #####\nsession.use_only_cookies = 0\n" | cat - /etc/php5/apache2/php.ini.$SUFFIX > /etc/php5/apache2/php.ini /etc/init.d/apache2 reload sleep 1 } services_before=`$CHECK_SERVICES && search_running_services_func` #apt-get clean apt-get -y update apt-get -y upgrade $DPKG_OPTIONS apt-get -y dist-upgrade $DPKG_OPTIONS #apache_config_func #php5_config_func apt-get -y install dialog locales less vim screen tzdata debconf ssh psmisc ncurses-term mktemp file debian-keyring logrotate debsums debconf-utils rsyslog sed '/imklog/s/^/#/' < /etc/rsyslog.conf > /etc/rsyslog.conf.new ; mv /etc/rsyslog.conf.new /etc/rsyslog.conf #apt-get -y install nullmailer heirloom-mailx apt-get clean # stoerende Dienste deaktivieren [ -f /etc/init.d/hwclock.sh ] && update-rc.d hwclock.sh stop 99 0 1 2 3 4 5 6 S . [ -f /etc/init.d/checkfs.sh ] && update-rc.d checkfs.sh stop 99 0 1 2 3 4 5 6 S . [ ! -e /dev/fd ] && ln -s /proc/self/fd /dev/fd if $CHECK_SERVICES ; then find_missing_services_func if [ -n "$missing_servs" ] ; then if $RESTART_SERVICES; then for s in $missing_servs; do [ "$s" = master ] && s=postfix if [ -x /etc/init.d/$s ] ; then /etc/init.d/$s start || true elif s=${s%-*}; [ -x /etc/init.d/$s ] ; then /etc/init.d/$s start || true fi started_services+="$s " done find_missing_services_func fi if [ -n "$missing_servs" ] ; then echo "gestoppte Dienste nach dem Upgrade: "$missing_servs echo "davon versucht zu restarten: "$started_services exit_status=1 fi fi new_servs=`echo "$services_diff" | grep '^>' | cut -d' ' -f2` #if [ -n "$new_servs" ] ; then # echo "neu gestartete Dienste nach dem Upgrade: "$new_servs # exit_status=1 #fi fi exit $exit_status