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.2.dev < prev    next >
Text File  |  2005-09-20  |  8KB  |  219 lines

  1. #!/bin/bash
  2.  
  3. # slis_update-3.2
  4. # Updates for SLIS 3.2
  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.2 started."
  56.  
  57. # Installation of Fedora Legacy Public GPG key
  58. if [ ! \( -e $UPDDIR/FLkey \) ]
  59. then
  60.   logger -t "$LOGTAG" "Installing FL GPG Key"
  61.   cat > /etc/FEDORA-LEGACY-GPG-KEY << EOF
  62. -----BEGIN PGP PUBLIC KEY BLOCK-----
  63. Version: GnuPG v1.0.7 (GNU/Linux)
  64.  
  65. mQGiBEALkQkRBACCBCp/a5rsqy2Q0NW/2OMkYtsb3k5M6dsQYoHDLiZK4VG1j+Bf
  66. 2zzp+HJiUnLFp/l7mROuRioU9/UHpEYFIVunBYXeZf84OxB+mruh9UZtYn3oVXtH
  67. oaMI7hIFirTZ5eEY7zrfvTbvZ2Sm5cE3F2G5sWVOfxhl5opinuWN4xtSwwCggooh
  68. LqarkF4KN6D8xoyjrhLaxiMD/Az7RE6oH0Vwl9dX7YmccymDEesT5Ql6Q5FvfkuZ
  69. F5ZaQwaBO2ko2hMMh2AdCxoYAZPjWqC5r6Wy9P8hMfh+A0S4zon2DE/r0d4vLEY2
  70. HoptwtElq6gpltydx+/vXhZWkwCO//Kz9wXgZr496KtGXmEKYtdlVScBW6OvdyyD
  71. 18zeA/9RuY59C7uxxe6cu7amqjP52xx5rHGkdJD5E8o3rmjdsr9tJ3FcjtIV0DV2
  72. BkfLIMnsp2gd972n7JBzlA9LJ+JTtMzvf9WdrErpRz1VeI1jHe4/hNGe3hd6xJIE
  73. rxj5FH+LwTj3vfErZdKsWOuudNkz1N4AwZr/k05gV3bi7j8RCLRIRmVkb3JhIExl
  74. Z2FjeSAoaHR0cDovL3d3dy5mZWRvcmFsZWdhY3kub3JnKSA8c2Vjbm90aWNlQGZl
  75. ZG9yYWxlZ2FjeS5vcmc+iFkEExECABkFAkALkQkECwcDAgMVAgMDFgIBAh4BAheA
  76. AAoJEBCMRRJzEAL686wAn3bA5dioMd0UDpUaES9TglLDpONbAJ467XWdHHwhxuHz
  77. oxWc3q7rWPBinLkCDQRAC5EuEAgAsPAVcrvrKB1A/hxoM61KEgaLB9GnGUOgoaV6
  78. I58stO3sxaxj3bblrpIJjo02BA49xrtL8kpqjKveABThVC1yiSYfySmXKHlO09cv
  79. A+qj+QSxieRciFKc50F1+j8q5Hqcigxzwhr4sJt5IhAx6HIwar5uxNNBgE98JN42
  80. GthUH39G+alRmzVd+3gQCLFroJSzHtFX7IlwHM33owAZwIVGlUhlBTHdbsvGf0xG
  81. mPYkI+JAUXpTTsnP7kR0/Ktm3zAHBEMw19eqQ5MSwVo28cA+jq2sLrL5DiE5quCd
  82. tB/RVnUUdbfN/o8sN6yxssNB6ZOB61l0K8bvm+9Qgstn/EQFSwADBggAmmFJueD1
  83. iXehZsRtaH+qZw7z6Q6jUPxDTiuVPhLkUux3wOSWMOp6S+ZYliCaw32TBKgE2SwT
  84. NnvTJYsuGLf3ECxOxMmu2McDHYZM82zRV4PRBMKFfiOa67/x5lhZgEkqf9TO+wk5
  85. M67GYbjZoyBaYEiE+eWD2cdema3n3zXzy+q2UEkHkzHx6ME9dRrgND3EW2hC9GJ6
  86. 7wY9h+BlUR6Am4o0/ZLZJ2QEvyVnlI3/zZo9L6h8waZKI4l16nuDr/O8z2UOYc/X
  87. OMwBJCVwvbB2Z/f91dhy2EVWJZyyZBCG/FMXXDchxKwJOOQgrVbxWGDIMSdyHLUL
  88. 2FuWnC/vdKc7wYhGBBgRAgAGBQJAC5EuAAoJEBCMRRJzEAL6wkcAnAlIrH0JuGjL
  89. T17HoheG/iUbj4Z4AJ9b/7OPGgNglwrLQJfihyPzManKYw==
  90. =wmoy
  91. -----END PGP PUBLIC KEY BLOCK-----
  92. EOF
  93.   rpm --import /etc/FEDORA-LEGACY-GPG-KEY
  94.   touch $UPDDIR/FLkey
  95.   logger -t "$LOGTAG" "FL GPG Key installed"
  96. fi
  97.  
  98. # APT updates
  99. logger -t "$LOGTAG" "Starting apt-get update..."
  100. logger -t "$LOGTAG" "=== PLEASE WAIT. DO NOT USE SLIS WHILE UPDATING ==="
  101. apt-get -q2 update
  102. if [ $? != 0 ]
  103. then
  104.   logger -t "$LOGTAG" "ERROR: apt-get update failed!"
  105. else
  106.  
  107.   # SLIS updates
  108.   logger -t "$LOGTAG" "Starting apt-get install slis-up2date..."
  109.   apt-get -q2 install slis-up2date > /tmp/$$.apt
  110.   if [ $? != 0 ]
  111.   then
  112.     logger -t "$LOGTAG" "ERROR: apt-get install slis-up2date failed!"
  113.   else
  114.     LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  115.     logger -t "$LOGTAG" "Installed updates: $LOGSTRING"
  116.   fi
  117.   /bin/rm -f /tmp/$$.apt
  118.  
  119.   # Official updates
  120.   logger -t "$LOGTAG" "Starting apt-get upgrade (maybe long)..."
  121.   apt-get -q2 upgrade > /tmp/$$.apt
  122.   if [ $? != 0 ]
  123.   then
  124.     logger -t "$LOGTAG" "ERROR: apt-get upgrade 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.  
  130.   # Kernel update (only the night)
  131.   declare -i HOUR
  132.   HOUR=`date +%k`
  133.   if [ $HOUR -lt 6 ]
  134.   then
  135.     logger -t "$LOGTAG" "Well, it's the night, let's check for a kernel update..."
  136.     logger -t "$LOGTAG" "Removing old kernel(s)..."
  137.     #last_kernel=`rpm -q kernel |sort|tail -1|grep -v "is not installed" 2>/dev/null`
  138.     #last_kernel=`rpm --last -q kernel |grep -v "is not installed"|head -1|awk '{print $1}' 2>/dev/null`
  139.     last_kernel=`rpm -q --qf "%{BUILDTIME}:%{NAME}-%{VERSION}-%{RELEASE}\n" kernel|grep -v "is not installed"|sort|tail -1|cut -f2 -d:`
  140.     #last_smpkernel=`rpm -q kernel-smp |sort|tail -1|grep -v "is not installed" 2>/dev/null`
  141.     #last_smpkernel=`rpm --last -q kernel-smp |grep -v "is not installed"|head -1|awk '{print $1}' 2>/dev/null`
  142.     last_smpkernel=`rpm -q --qf "%{BUILDTIME}:%{NAME}-%{VERSION}-%{RELEASE}\n" kernel-smp|grep -v "is not installed"|sort|tail -1|cut -f2 -d:`
  143.     if [ "$last_kernel" != "" ]
  144.     then
  145.       for i in `rpm -q kernel`
  146.       do
  147.         if [ "$i" != "$last_kernel" ]
  148.         then
  149.           if [ "`echo $i|sed \"s/^kernel//\"`" = "`uname -r`" ]
  150.           then
  151.             logger -t "$LOGTAG" "Warning: not removing old kernel $i as it is the running one"
  152.           else
  153.             rpm -e $i
  154.             logger -t "$LOGTAG" "Removed $i"
  155.           fi
  156.         fi
  157.       done
  158.     fi
  159.     if [ "$last_smpkernel" != "" ]
  160.     then
  161.       for i in `rpm -q kernel-smp`
  162.       do
  163.         if [ "$i" != "$last_smpkernel" ]
  164.         then
  165.           if [ "`echo $i|sed \"s/^kernel-smp-//\"`smp" = "`uname -r`" ]
  166.           then
  167.             logger -t "$LOGTAG" "Warning: not removing old kernel $i as it is the running one"
  168.           else
  169.             rpm -e $i
  170.             logger -t "$LOGTAG" "Removed $i"
  171.           fi
  172.         fi
  173.       done
  174.     fi
  175.     apt-get -q2 -o RPM::Upgrade-Virtual="true" -o RPM::Remove-Old-Kernels="true" upgrade > /tmp/$$.apt
  176.     if [ $? != 0 ]
  177.     then
  178.       logger -t "$LOGTAG" "ERROR: apt-get upgrade for the kernel failed!"
  179.     else
  180.       LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  181.       if [ "$LOGSTRING" != "" ]
  182.       then
  183.         logger -t "$LOGTAG" "KERNEL UPDATED. REBOOTING NOW..."
  184.         if [ "`uname -v |grep SMP`" != "" ]
  185.         then
  186.           SMP="smp"
  187.         else
  188.           SMP=""
  189.         fi
  190.         KERNEL_STR=`/bin/ls -r --sort=time /boot/vmlinuz-*$SMP |tail -1`
  191.         /sbin/grubby --set-default="$KERNEL_STR"
  192.         /sbin/reboot
  193.         killall slis_update
  194.         killall slis_update.dev
  195.       else
  196.         logger -t "$LOGTAG" "Kernel seems up to date. No change."
  197.       fi
  198.     fi
  199.   fi
  200.  
  201.   # Cache cleaning
  202.   logger -t "$LOGTAG" "Cleaning the APT cache..."
  203.   # Not running "apt-get -q2 clean" because we want the partial downloaded
  204.   # files to been kept.
  205.   /bin/rm -f /var/cache/apt/archives/*rpm
  206.  
  207.   # Remove the docs
  208.   /bin/rm -rf /usr/share/doc/*
  209.  
  210.   logger -t "$LOGTAG" "APT updates finished."
  211.   /bin/rm -f /tmp/$$.apt
  212. fi
  213.  
  214.  
  215. ##############################
  216. logger -t "$LOGTAG" "Script Version 3.2 ended."
  217.  
  218. /bin/rm -rf /var/lock/slis_upd
  219.