home *** CD-ROM | disk | FTP | other *** search
/ ftp.ac-grenoble.fr / 2015.02.ftp.ac-grenoble.fr.tar / ftp.ac-grenoble.fr / pub / slis / updates_rsync / slis_update-3.1 < prev    next >
Text File  |  2006-04-03  |  10KB  |  276 lines

  1. #!/bin/bash
  2.  
  3. # slis_update-3.1
  4. # Updates for SLIS 3.1
  5.  
  6.  
  7. # This script is part of the SLIS Project initiated by the CARMI-Internet
  8. # (AcadΘmie de Grenoble - France 38).
  9. # Ce script fait partie du projet SLIS dΘmarrΘ par le CARMI-Internet
  10. # (AcadΘmie de Grenoble - France 38).
  11. #
  12. # SLIS : Serveur de communications Linux pour l'Internet Scolaire.
  13. # Copyright (C) 1998-2003 Bruno Bzeznik
  14. #
  15. #    This program is free software; you can redistribute it and/or modify
  16. #    it under the terms of the GNU General Public License as published by
  17. #    the Free Software Foundation; either version 2 of the License, or
  18. #    (at your option) any later version.
  19. #
  20. #    This program is distributed in the hope that it will be useful,
  21. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23. #    GNU General Public License for more details.
  24. #    You should have received a copy of the GNU General Public License
  25. #    along with this program (For example ./COPYING);
  26. #    if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  27. #    Cambridge, MA 02139, USA.
  28. #
  29. # Please send all comments and bug reports by electronic mail to:
  30. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  31. # or to <slis@ac-grenoble.fr>
  32. #
  33. # Envoyez vos suggestions et reports de bugs par e-mail α
  34. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  35. # ou α <slis@ac-grenoble.fr>
  36. #
  37.  
  38. ### VARIABLES ###
  39. LOGTAG="slis_update[$$]"
  40. UPDDIR="/home/hadmin/updates"
  41. . /usr/local/lib/slis-sys.inc.bash
  42. load_config
  43.  
  44. ##################
  45.  
  46. # Locking
  47. if [ -e /var/lock/slis_upd ]
  48. then
  49.   logger -t "$LOGTAG" "Lock found. Update already started."
  50.   exit
  51. fi
  52. touch /var/lock/slis_upd
  53. sleep 1
  54.  
  55. logger -t "$LOGTAG" "Script Version 3.1 started."
  56.  
  57.  
  58. # Spring cleaning
  59. if [ ! \( -e $UPDDIR/clean01 \) ]
  60. then
  61.   logger -t "$LOGTAG" "Cleaning the cache"
  62.   rm -f /var/cache/apt/archives/kernel*2.4.22-1.2166*
  63.   rm -f /var/cache/apt/archives/kernel*2.4.22-1.2174*
  64.   rm -f /var/cache/apt/archives/perl*5.8.3-10*
  65.   touch $UPDDIR/clean01
  66.   logger -t "$LOGTAG" "Cleaning done."
  67. fi
  68.  
  69. # Installation of Fedora Legacy Public GPG key
  70. if [ ! \( -e $UPDDIR/FLkey \) ]
  71. then
  72.   logger -t "$LOGTAG" "Installing FL GPG Key"
  73.   cat > /etc/FEDORA-LEGACY-GPG-KEY << EOF
  74. -----BEGIN PGP PUBLIC KEY BLOCK-----
  75. Version: GnuPG v1.0.7 (GNU/Linux)
  76.  
  77. mQGiBEALkQkRBACCBCp/a5rsqy2Q0NW/2OMkYtsb3k5M6dsQYoHDLiZK4VG1j+Bf
  78. 2zzp+HJiUnLFp/l7mROuRioU9/UHpEYFIVunBYXeZf84OxB+mruh9UZtYn3oVXtH
  79. oaMI7hIFirTZ5eEY7zrfvTbvZ2Sm5cE3F2G5sWVOfxhl5opinuWN4xtSwwCggooh
  80. LqarkF4KN6D8xoyjrhLaxiMD/Az7RE6oH0Vwl9dX7YmccymDEesT5Ql6Q5FvfkuZ
  81. F5ZaQwaBO2ko2hMMh2AdCxoYAZPjWqC5r6Wy9P8hMfh+A0S4zon2DE/r0d4vLEY2
  82. HoptwtElq6gpltydx+/vXhZWkwCO//Kz9wXgZr496KtGXmEKYtdlVScBW6OvdyyD
  83. 18zeA/9RuY59C7uxxe6cu7amqjP52xx5rHGkdJD5E8o3rmjdsr9tJ3FcjtIV0DV2
  84. BkfLIMnsp2gd972n7JBzlA9LJ+JTtMzvf9WdrErpRz1VeI1jHe4/hNGe3hd6xJIE
  85. rxj5FH+LwTj3vfErZdKsWOuudNkz1N4AwZr/k05gV3bi7j8RCLRIRmVkb3JhIExl
  86. Z2FjeSAoaHR0cDovL3d3dy5mZWRvcmFsZWdhY3kub3JnKSA8c2Vjbm90aWNlQGZl
  87. ZG9yYWxlZ2FjeS5vcmc+iFkEExECABkFAkALkQkECwcDAgMVAgMDFgIBAh4BAheA
  88. AAoJEBCMRRJzEAL686wAn3bA5dioMd0UDpUaES9TglLDpONbAJ467XWdHHwhxuHz
  89. oxWc3q7rWPBinLkCDQRAC5EuEAgAsPAVcrvrKB1A/hxoM61KEgaLB9GnGUOgoaV6
  90. I58stO3sxaxj3bblrpIJjo02BA49xrtL8kpqjKveABThVC1yiSYfySmXKHlO09cv
  91. A+qj+QSxieRciFKc50F1+j8q5Hqcigxzwhr4sJt5IhAx6HIwar5uxNNBgE98JN42
  92. GthUH39G+alRmzVd+3gQCLFroJSzHtFX7IlwHM33owAZwIVGlUhlBTHdbsvGf0xG
  93. mPYkI+JAUXpTTsnP7kR0/Ktm3zAHBEMw19eqQ5MSwVo28cA+jq2sLrL5DiE5quCd
  94. tB/RVnUUdbfN/o8sN6yxssNB6ZOB61l0K8bvm+9Qgstn/EQFSwADBggAmmFJueD1
  95. iXehZsRtaH+qZw7z6Q6jUPxDTiuVPhLkUux3wOSWMOp6S+ZYliCaw32TBKgE2SwT
  96. NnvTJYsuGLf3ECxOxMmu2McDHYZM82zRV4PRBMKFfiOa67/x5lhZgEkqf9TO+wk5
  97. M67GYbjZoyBaYEiE+eWD2cdema3n3zXzy+q2UEkHkzHx6ME9dRrgND3EW2hC9GJ6
  98. 7wY9h+BlUR6Am4o0/ZLZJ2QEvyVnlI3/zZo9L6h8waZKI4l16nuDr/O8z2UOYc/X
  99. OMwBJCVwvbB2Z/f91dhy2EVWJZyyZBCG/FMXXDchxKwJOOQgrVbxWGDIMSdyHLUL
  100. 2FuWnC/vdKc7wYhGBBgRAgAGBQJAC5EuAAoJEBCMRRJzEAL6wkcAnAlIrH0JuGjL
  101. T17HoheG/iUbj4Z4AJ9b/7OPGgNglwrLQJfihyPzManKYw==
  102. =wmoy
  103. -----END PGP PUBLIC KEY BLOCK-----
  104. EOF
  105.   rpm --import /etc/FEDORA-LEGACY-GPG-KEY
  106.   touch $UPDDIR/FLkey
  107.   logger -t "$LOGTAG" "FL GPG Key installed"
  108. fi
  109.  
  110. # APT updates
  111. logger -t "$LOGTAG" "Starting apt-get update..."
  112. logger -t "$LOGTAG" "=== PLEASE WAIT. DO NOT USE SLIS WHILE UPDATING ==="
  113. apt-get -q2 update
  114. if [ $? != 0 ]
  115. then
  116.   logger -t "$LOGTAG" "ERROR: apt-get update failed!"
  117. else
  118.  
  119.   # SLIS updates
  120.   logger -t "$LOGTAG" "Starting apt-get install slis-up2date..."
  121.   apt-get -q2 install slis-up2date > /tmp/$$.apt
  122.   if [ $? != 0 ]
  123.   then
  124.     logger -t "$LOGTAG" "ERROR: apt-get install slis-up2date failed!"
  125.   else
  126.     LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  127.     logger -t "$LOGTAG" "Installed updates: $LOGSTRING"
  128.   fi
  129.   /bin/rm -f /tmp/$$.apt
  130.  
  131.   # Official updates
  132.   logger -t "$LOGTAG" "Starting apt-get upgrade (maybe long)..."
  133.   apt-get -q2 upgrade > /tmp/$$.apt
  134.   if [ $? != 0 ]
  135.   then
  136.     logger -t "$LOGTAG" "ERROR: apt-get upgrade failed!"
  137.   else
  138.     LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  139.     logger -t "$LOGTAG" "Installed updates: $LOGSTRING"
  140.   fi
  141.  
  142.  
  143.   # Kernel update (only the night)
  144.   declare -i HOUR
  145.   HOUR=`date +%k`
  146.   if [ $HOUR -lt 6 ]
  147.   then
  148.     logger -t "$LOGTAG" "Well, it's the night, let's check for a kernel update..."
  149.     logger -t "$LOGTAG" "Removing old kernel(s)..."
  150.     #last_kernel=`rpm -q kernel |sort|tail -1|grep -v "is not installed" 2>/dev/null`
  151.     #last_kernel=`rpm --last -q kernel |grep -v "is not installed"|head -1|awk '{print $1}' 2>/dev/null`
  152.     last_kernel=`rpm -q --qf "%{BUILDTIME}:%{NAME}-%{VERSION}-%{RELEASE}\n" kernel|grep -v "is not installed"|sort|tail -1|cut -f2 -d:`
  153.     #last_smpkernel=`rpm -q kernel-smp |sort|tail -1|grep -v "is not installed" 2>/dev/null`
  154.     #last_smpkernel=`rpm --last -q kernel-smp |grep -v "is not installed"|head -1|awk '{print $1}' 2>/dev/null`
  155.     last_smpkernel=`rpm -q --qf "%{BUILDTIME}:%{NAME}-%{VERSION}-%{RELEASE}\n" kernel-smp|grep -v "is not installed"|sort|tail -1|cut -f2 -d:`
  156.     if [ "$last_kernel" != "" ]
  157.     then
  158.       for i in `rpm -q kernel`
  159.       do
  160.         if [ "$i" != "$last_kernel" ]
  161.         then
  162.           if [ "`echo $i|sed \"s/^kernel//\"`" = "`uname -r`" ]
  163.           then
  164.             logger -t "$LOGTAG" "Warning: not removing old kernel $i as it is the running one"
  165.           else
  166.             rpm -e $i
  167.             logger -t "$LOGTAG" "Removed $i"
  168.           fi
  169.         fi
  170.       done
  171.     fi
  172.     if [ "$last_smpkernel" != "" ]
  173.     then
  174.       for i in `rpm -q kernel-smp`
  175.       do
  176.         if [ "$i" != "$last_smpkernel" ]
  177.         then
  178.           if [ "`echo $i|sed \"s/^kernel-smp-//\"`smp" = "`uname -r`" ]
  179.           then
  180.             logger -t "$LOGTAG" "Warning: not removing old kernel $i as it is the running one"
  181.           else
  182.             rpm -e $i
  183.             logger -t "$LOGTAG" "Removed $i"
  184.           fi
  185.         fi
  186.       done
  187.     fi
  188.     apt-get -q2 -o RPM::Upgrade-Kernel="true"  upgrade > /tmp/$$.apt
  189.     if [ $? != 0 ]
  190.     then
  191.       logger -t "$LOGTAG" "ERROR: apt-get upgrade for the kernel failed!"
  192.     else
  193.       LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  194.       if [ "$LOGSTRING" != "" ]
  195.       then
  196.         logger -t "$LOGTAG" "KERNEL UPDATED. REBOOTING NOW..."
  197.         if [ "`uname -v |grep SMP`" != "" ]
  198.         then
  199.           SMP="smp"
  200.         else
  201.           SMP=""
  202.         fi
  203.         KERNEL_STR=`/bin/ls -r --sort=time /boot/vmlinuz-*$SMP |tail -1`
  204.         /sbin/grubby --set-default="$KERNEL_STR"
  205.         /sbin/reboot
  206.         killall slis_update
  207.         killall slis_update.dev
  208.       else
  209.         logger -t "$LOGTAG" "Kernel seems up to date. No change."
  210.       fi
  211.     fi
  212.   fi
  213.  
  214.   # Cache cleaning
  215.   logger -t "$LOGTAG" "Cleaning the APT cache..."
  216.   # Not running "apt-get -q2 clean" because we want the partial downloaded
  217.   # files to been kept.
  218.   /bin/rm -f /var/cache/apt/archives/*rpm
  219.  
  220.   logger -t "$LOGTAG" "APT updates finished."
  221.   /bin/rm -f /tmp/$$.apt
  222. fi
  223.  
  224. # The first Fedora Legacy kernel update was not updating the default
  225. # grub image 
  226. if [ ! \( -e $UPDDIR/flkbug01 \) -a $HOUR -lt 6 ]
  227. then
  228.   if [ "`grubby --default-kernel`" = "/boot/vmlinuz-2.4.22-1.2199.nptlsmp" \
  229.     -o "`grubby --default-kernel`" = "/boot/vmlinuz-2.4.22-1.2199.nptl" ]
  230.   then
  231.         logger -t "$LOGTAG" "Default kernel was not up2date. Rebooting with the good one..."
  232.         if [ "`uname -v |grep SMP`" != "" ]
  233.         then
  234.           SMP="smp"
  235.         else
  236.           SMP=""
  237.         fi
  238.         KERNEL_STR=`/bin/ls -r --sort=time /boot/vmlinuz-*$SMP |tail -1`
  239.         /sbin/grubby --set-default="$KERNEL_STR"
  240.         /sbin/reboot
  241.   fi
  242.   touch $UPDDIR/flkbug01
  243. fi
  244.  
  245. # Reboot if the default kernel is not the running one
  246. # It's still a consequence of the first FL kernel update
  247. # that was a nightmare...
  248. if [ ! \( -e $UPDDIR/flkbug02 \) ]
  249. then
  250.   if [ "`grubby --default-kernel |sed \"s,/boot/vmlinuz-,,\"`" != "`uname -r`" ]
  251.   then
  252.     logger -t "$LOGTAG" "Running kernel is not the default one, rebooting..."
  253.     /sbin/reboot
  254.   fi
  255.   touch $UPDDIR/flkbug02
  256. fi
  257.  
  258. # courier-imap installation
  259. if [ ! \( -e $UPDDIR/courier-imap \) ]
  260. then
  261.   logger -t "$LOGTAG" "Installing courier-imap..."
  262.   apt-get -q2 install courier-imap  > /tmp/$$.courier.apt
  263.   if [ $? != 0 ]
  264.   then
  265.       logger -t "$LOGTAG" "ERROR: apt-get install courier-imap failed!"
  266.   else
  267.       logger -t "$LOGTAG" "Courier-imap installed."
  268.       touch $UPDDIR/courier-imap
  269.   fi
  270. fi
  271.  
  272. ##############################
  273. logger -t "$LOGTAG" "Script Version 3.1 ended."
  274.  
  275. /bin/rm -rf /var/lock/slis_upd
  276.