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 < prev    next >
Text File  |  2012-12-03  |  9KB  |  269 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. # openldap "schemacheck off" deprecated
  99. #   -> downgrading openldap the time to find a better solution
  100. if [ ! \( -e $UPDDIR/openldap_downgrade \) ]
  101. then
  102.   logger -t "$LOGTAG" "Downgrading openldap (schemacheck off bug)"
  103.   apt-get -q2 update
  104.   if [ $? != 0 ]
  105.   then
  106.     logger -t "$LOGTAG" "Downgrading openldap - ERROR: apt-get update failed!"
  107.     FAILURE=1
  108.   else
  109.     apt-get -q2 --force-yes install slis-up2date openldap=2.2.13 openldap-clients=2.2.13 compat-openldap=2.1.30 openldap-servers=2.2.13
  110.     if [ $? != 0 ]
  111.     then
  112.       logger -t "$LOGTAG" "Downgrading openldap - ERROR: apt-get install failed!"
  113.       FAILURE=1
  114.     else
  115.       touch $UPDDIR/openldap_downgrade
  116.     fi
  117.   fi
  118. fi
  119.  
  120. # Change update server
  121. if [ ! \( -e $UPDDIR/update_server-2 \) ]
  122. then
  123.   sed -i "s/193.54.149.12/193.54.149.22/" /etc/slis/slis.conf
  124.   if [ $? != 0 ] 
  125.   then
  126.     logger -t "$LOGTAG" "Changing update server - ERROR: sed failed!"
  127.     FAILURE=1
  128.   else
  129.     sed -i 's;ftp://ftp.ac-grenoble.fr/pub/slis;ftp://old.slis.fr/;' /etc/apt/sources.list
  130.     if [ $? != 0 ] 
  131.     then
  132.       logger -t "$LOGTAG" "Changing update server - ERROR: sed failed!"
  133.       FAILURE=1
  134.     else
  135.       touch $UPDDIR/update_server-2
  136.     fi  
  137.   fi  
  138. fi
  139.  
  140. # APT updates
  141. FAILURE=0
  142. logger -t "$LOGTAG" "Starting apt-get update..."
  143. logger -t "$LOGTAG" "=== PLEASE WAIT. DO NOT USE SLIS WHILE UPDATING ==="
  144. apt-get -q2 update
  145. if [ $? != 0 ]
  146. then
  147.   logger -t "$LOGTAG" "ERROR: apt-get update failed!"
  148.   FAILURE=1
  149. else
  150.  
  151.   # SLIS updates
  152.   logger -t "$LOGTAG" "Starting apt-get install slis-up2date..."
  153.   apt-get -q2 install slis-up2date > /tmp/$$.apt
  154.   if [ $? != 0 ]
  155.   then
  156.     logger -t "$LOGTAG" "ERROR: apt-get install slis-up2date failed!"
  157.     FAILURE=1
  158.   else
  159.     LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  160.     logger -t "$LOGTAG" "Installed updates: $LOGSTRING"
  161.   fi
  162.   /bin/rm -f /tmp/$$.apt
  163.  
  164.   # Official updates
  165.   logger -t "$LOGTAG" "Starting apt-get upgrade (maybe long)..."
  166.   apt-get -q2 upgrade > /tmp/$$.apt
  167.   if [ $? != 0 ]
  168.   then
  169.     logger -t "$LOGTAG" "ERROR: apt-get upgrade failed!"
  170.     FAILURE=1
  171.   else
  172.     LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  173.     logger -t "$LOGTAG" "Installed updates: $LOGSTRING"
  174.   fi
  175.  
  176.   # Kernel update (only the night)
  177.   declare -i HOUR
  178.   HOUR=`date +%k`
  179.   if [ $HOUR -lt 6 ]
  180.   then
  181.     logger -t "$LOGTAG" "Well, it's the night, let's check for a kernel update..."
  182.     logger -t "$LOGTAG" "Removing old kernel(s)..."
  183.     #last_kernel=`rpm -q kernel |sort|tail -1|grep -v "is not installed" 2>/dev/null`
  184.     #last_kernel=`rpm --last -q kernel |grep -v "is not installed"|head -1|awk '{print $1}' 2>/dev/null`
  185.     last_kernel=`rpm -q --qf "%{BUILDTIME}:%{NAME}-%{VERSION}-%{RELEASE}\n" kernel|grep -v "is not installed"|sort|tail -1|cut -f2 -d:`
  186.     #last_smpkernel=`rpm -q kernel-smp |sort|tail -1|grep -v "is not installed" 2>/dev/null`
  187.     #last_smpkernel=`rpm --last -q kernel-smp |grep -v "is not installed"|head -1|awk '{print $1}' 2>/dev/null`
  188.     last_smpkernel=`rpm -q --qf "%{BUILDTIME}:%{NAME}-%{VERSION}-%{RELEASE}\n" kernel-smp|grep -v "is not installed"|sort|tail -1|cut -f2 -d:`
  189.     if [ "$last_kernel" != "" ]
  190.     then
  191.       for i in `rpm -q kernel`
  192.       do
  193.         if [ "$i" != "$last_kernel" ]
  194.         then
  195.           if [ "`echo $i|sed \"s/^kernel//\"`" = "`uname -r`" ]
  196.           then
  197.             logger -t "$LOGTAG" "Warning: not removing old kernel $i as it is the running one"
  198.           else
  199.             rpm -e $i
  200.             logger -t "$LOGTAG" "Removed $i"
  201.           fi
  202.         fi
  203.       done
  204.     fi
  205.     if [ "$last_smpkernel" != "" ]
  206.     then
  207.       for i in `rpm -q kernel-smp`
  208.       do
  209.         if [ "$i" != "$last_smpkernel" ]
  210.         then
  211.           if [ "`echo $i|sed \"s/^kernel-smp-//\"`smp" = "`uname -r`" ]
  212.           then
  213.             logger -t "$LOGTAG" "Warning: not removing old kernel $i as it is the running one"
  214.           else
  215.             rpm -e $i
  216.             logger -t "$LOGTAG" "Removed $i"
  217.           fi
  218.         fi
  219.       done
  220.     fi
  221.     apt-get -q2 -o RPM::Upgrade-Virtual="true" -o RPM::Remove-Old-Kernels="true" upgrade > /tmp/$$.apt
  222.     if [ $? != 0 ]
  223.     then
  224.       logger -t "$LOGTAG" "ERROR: apt-get upgrade for the kernel failed!"
  225.       FAILURE=1
  226.     else
  227.       LOGSTRING=`grep -v Executing /tmp/$$.apt|grep -v Preparing|grep -v Checking|awk '{print $1}'`
  228.       if [ "$LOGSTRING" != "" ]
  229.       then
  230.         logger -t "$LOGTAG" "KERNEL UPDATED. REBOOTING NOW..."
  231.         if [ "`uname -v |grep SMP`" != "" ]
  232.         then
  233.           SMP="smp"
  234.         else
  235.           SMP=""
  236.         fi
  237.         KERNEL_STR=`/bin/ls -r --sort=time /boot/vmlinuz-*$SMP |tail -1`
  238.         /sbin/grubby --set-default="$KERNEL_STR"
  239.         /sbin/reboot
  240.         killall slis_update
  241.         killall slis_update.dev
  242.       else
  243.         logger -t "$LOGTAG" "Kernel seems up to date. No change."
  244.       fi
  245.     fi
  246.   fi
  247.  
  248.   # Cache cleaning
  249.   # Not running "apt-get -q2 clean" because we want the partial downloaded
  250.   # files to been kept.
  251.   if [ "$FAILURE" = "0" ]
  252.   then
  253.     logger -t "$LOGTAG" "Cleaning the APT cache..."
  254.     /bin/rm -f /var/cache/apt/archives/*rpm
  255.   fi
  256.  
  257.   # Remove the docs
  258.   /bin/rm -rf /usr/share/doc/*
  259.  
  260.   logger -t "$LOGTAG" "APT updates finished."
  261.   /bin/rm -f /tmp/$$.apt
  262. fi
  263.  
  264.  
  265. ##############################
  266. logger -t "$LOGTAG" "Script Version 3.2 ended."
  267.  
  268. /bin/rm -rf /var/lock/slis_upd
  269.