home *** CD-ROM | disk | FTP | other *** search
/ ftp.ac-grenoble.fr / 2015.02.ftp.ac-grenoble.fr.tar / ftp.ac-grenoble.fr / pub / slis / contribs / slis_update-academie.exemple < prev   
Text File  |  2001-06-26  |  10KB  |  314 lines

  1. #!/bin/bash
  2.  
  3. # slis_update-academie
  4. # Script de mise α jour tΘlΘchargΘ rΘguliΦrement par rsync par tous les
  5. # serveurs SLIS de l'academie
  6.  
  7. # FICHIER EXEMPLE
  8.  
  9. # This script is part of the SLIS Project initiated by the CARMI-Internet
  10. # (AcadΘmie de Grenoble - France 38).
  11. # Ce script fait partie du projet SLIS dΘmarrΘ par le CARMI-Internet
  12. # (AcadΘmie de Grenoble - France 38).
  13. #
  14. # SLIS : Serveur de communications Linux pour l'Internet Scolaire.
  15. # Copyright (C) 1998-2000 Bruno Bzeznik
  16. #
  17. #    This program is free software; you can redistribute it and/or modify
  18. #    it under the terms of the GNU General Public License as published by
  19. #    the Free Software Foundation; either version 2 of the License, or
  20. #    (at your option) any later version.
  21. #
  22. #    This program is distributed in the hope that it will be useful,
  23. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  24. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  25. #    GNU General Public License for more details.
  26. #    You should have received a copy of the GNU General Public License
  27. #    along with this program (For example ./COPYING);
  28. #    if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  29. #    Cambridge, MA 02139, USA.
  30. #
  31. # Please send all comments and bug reports by electronic mail to:
  32. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  33. # or to <slis@ac-grenoble.fr>
  34. #
  35. # Envoyez vos suggestions et reports de bugs par e-mail α
  36. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  37. # ou α <slis@ac-grenoble.fr>
  38. #
  39.  
  40. ### VARIABLES ###
  41. UPDDIR=/home/hadmin/updates # Rep pour les flags
  42. LOGTAG="slis_update[$$]" # Ce qui apparait en syslog
  43. PAS_UPD_KERNEL=0        # Si ce flag est a un, alors la mise a jour du noyau
  44.                 # (qui necessite reboot) ne sera pas faite cette fois.
  45. # Recuperation de la variable HOSTNAME :
  46. grep HOSTNAME /etc/sysconfig/network > /tmp/hostname
  47. . /tmp/hostname
  48. rm -rf /tmp/hostname
  49.  
  50. QUEUE=/home/hadmin/cgi-bin/queue     # File d'attente SLIS
  51. BASE=/home/hadmin/cgi-bin/base        # Base SLIS
  52. BINDIR=/usr/local/sbin            # Scripts et binaires SLIS
  53. ACAD_DOMAIN=ac-grenoble.fr        # Domaine
  54. MAILSERVER=pluton            # Serveur de messagerie du domaine (nom sans le domaine)
  55. IPMAILSERVER=193.54.149.10        # Adresse ip du serveur de messagerie
  56. TFTP=pluton.ac-grenoble.fr        # Serveur tftp des mises α jour (obsolete)
  57. RSYNC=pluton.ac-grenoble.fr        # Serveur rsync des mises α jour
  58. MODULE=slis-updates            # Module rsync du serveur des mises α jour
  59. FTP=ftp.ac-grenoble.fr            # Serveur anonyme de mises α jour RedHat
  60. TIME=pluton.ac-grenoble.fr        # Serveur d'heure
  61. SLISMASTER=Bruno@ac-grenoble.fr        # Administrateur acadΘmique SLIS
  62. WEBMASTER=`ls -ld /home/httpd/html |awk '{print $3}'` # Webmaster designΘ par l'admin local
  63. VERSION=`cat /etc/version_slis_num`
  64.  
  65. . /home/hadmin/slis.conf
  66.  
  67. ##################
  68.  
  69. # Gestion d'un lock
  70. if [ -e /var/lock/slis_upd ]
  71. then 
  72.   logger -t "$LOGTAG" "Deja en cours. Abandon."
  73.   exit
  74. fi
  75. touch /var/lock/slis_upd
  76. sleep 1
  77.  
  78. logger -t "$LOGTAG" "Script Academie Debut"
  79. ##############################
  80.  
  81. # INSTALLATION DE SSF
  82. #####################
  83.  
  84. if [ ! \( -e $UPDDIR/A-1 \) ]
  85. then
  86.   cd /tmp
  87.   rsync rsync://$RSYNC_HOST/ssf/SSF-SLIS.tgz . 2> /var/log/ssf_install
  88.   tar zxf SSF-SLIS.tgz
  89.   cd SSF-SLIS
  90.   rm -rf /etc/ssh_host_key
  91.   ./install >/dev/null 2>> /var/log/ssf_install
  92.   echo "/usr/local/sbin/ssfd" >> /etc/rc.d/rc.local
  93.   /usr/local/sbin/ssfd
  94.   cd /tmp
  95.   rm -rf SSF-SLIS*
  96.  
  97.   touch $UPDDIR/A-1
  98.   logger -t "$LOGTAG" "UPDATE A-1 effectuee."
  99. fi
  100. ###
  101.  
  102. # Chg du mot de passe root
  103. ##########################
  104.  
  105. if [ ! \( -e $UPDDIR/A-2 \) ]
  106. then
  107.   R=$RANDOM
  108.   sed "s/2dnTHZskiddnM/jdys2ksudhta/" /etc/shadow > /tmp/s.$R
  109.   cp -f /etc/shadow /etc/shadow.A-2
  110.   chmod 000 /etc/shadow.A-2
  111.   mv -f /tmp/s.$R /etc/shadow
  112.   chown root.root /etc/shadow
  113.   chmod 600 /etc/shadow
  114.  
  115.   touch $UPDDIR/A-2
  116.   logger -t "$LOGTAG" "UPDATE A-2 effectuee."
  117. fi
  118. ###
  119.  
  120. # Compte admin pour les Cyberecoles de Grenoble
  121.  
  122. if [ ! \( -e $UPDDIR/A-3c \) ]
  123. then
  124.   
  125.   if [ "`echo $HOSTNAME |grep grenoble1`" != "" -o "`echo $HOSTNAME |grep grenoble2`" != "" -o "`echo $HOSTNAME |grep grenoble3`" != "" ]
  126.   then
  127.     cp -f /etc/hadmin/conf/users /tmp
  128.     sed "s/cybgre:skduhettfs//" /tmp/users > /etc/hadmin/conf/users
  129.     rm -f /tmp/users
  130.     echo >> /etc/hadmin/conf/users
  131.     echo "cybgre:skduhettfs" >> /etc/hadmin/conf/users
  132.     cp -f /etc/hadmin/conf/access.conf /tmp/access.conf
  133.     sed "s/carmi/carmi cybgre/" /tmp/access.conf > /etc/hadmin/conf/access.conf
  134.     rm -rf /tmp/access.conf
  135.     killall -HUP httpd
  136.   fi
  137.  
  138.   touch $UPDDIR/A-3c
  139.   logger -t "$LOGTAG" "UPDATE A-3c effectuee."
  140. fi
  141. ###
  142.  
  143.  
  144. # Nouveau pass carmi
  145. if [ ! \( -e $UPDDIR/A-8 \) ]
  146. then
  147.  
  148.   htpasswd -b -p /etc/hadmin/conf/users carmi sjskkkkdddy/ss 2>/dev/null
  149.  
  150.   touch $UPDDIR/A-8
  151.   logger -t "$LOGTAG" "UPDATE A-8 effectuee."
  152. fi
  153. ###
  154.  
  155.  
  156.  
  157.  
  158. ### MAJ specifique par host
  159. logger -t "$LOGTAG" "Update specifique host..."
  160. HOST=`echo $HOSTNAME|sed "s/\.$DOMAIN//"`
  161. cd /tmp
  162. rsync -q rsync://$RSYNC_HOST/$RSYNC_MODULE/hosts/$HOST 2>/dev/null .
  163. if [ $? = 0 ]
  164. then
  165.   logger -t "$LOGTAG" "Verification du fichier $HOST."
  166.   if [ -f $UPDDIR/host ]
  167.   then
  168.     SERIAL=`cat $UPDDIR/host`
  169.   else
  170.     SERIAL=0
  171.   fi
  172.   SERIAL_UPD=`grep "SERIAL_NUMBER=" ./$HOST|cut -d= -f2`
  173.   HOST_UPD=`grep "HOST_UPD=" ./$HOST|cut -d= -f2`
  174.   if [ $SERIAL_UPD -gt $SERIAL -a "$HOST_UPD" = "$HOST" ]
  175.   then
  176.      logger -t "$LOGTAG" "Execution du fichier $HOST."
  177.      echo "$SERIAL_UPD" > $UPDDIR/host
  178.      bash ./$HOST
  179.   else
  180.      logger -t "$LOGTAG" "Fichier $HOST deja execute ou non valide."
  181.   fi
  182. else
  183.   logger -t "$LOGTAG" "Nothing for $HOST."
  184. fi
  185.  
  186. ### Supervision
  187.  
  188. logger -t "$LOGTAG" "Supervision DEBUT..."
  189.  
  190. # Parametres du user de connexion a la base SQL
  191. export PGUSER=sliss
  192. export PGPASSWORD=mypass
  193. SQL_SERVER="sql.ac-grenoble.fr"
  194. PSQL="psql -h $SQL_SERVER sliss -tqc"
  195.  
  196. # Recuperation des params de l'administrateur et autres parametres
  197. PRENOM_ADMIN=`awk '{if (NR==1) print}' $BASE/params_admin.txt`
  198. NOM_ADMIN=`awk '{if (NR==2) print}' $BASE/params_admin.txt`
  199. MAIL_ADMIN=`awk '{if (NR==3) print}' $BASE/params_admin.txt`
  200. TEL_ADMIN=`awk '{if (NR==4) print}' $BASE/params_admin.txt`
  201. VERSION_SLIS=`cat /etc/version_slis`
  202. MEM=`free |awk '{if ($1 == "Mem:") print $2}'`
  203. UPTIME=`cat /proc/uptime |cut -d. -f1`
  204. LOAD=`cat /proc/loadavg |cut -d" " -f3`
  205. if [ "`uname -r |cut -d. -f1,2`" = "2.2" ]
  206. then
  207.   CPU_MODEL=`cat /proc/cpuinfo |grep -i "model name"|cut -d: -f2|uniq`
  208.   CPU_SPEED=`cat /proc/cpuinfo |grep -i "cpu MHz"|cut -d: -f2|cut -d. -f1|uniq`
  209.   CPU="$CPU_MODEL $CPU_SPEED MHz"
  210. fi
  211. if [ "`uname -r |cut -d. -f1,2`" = "2.0" ]
  212. then
  213.   CPU_MODEL=`cat /proc/cpuinfo |grep -i "model"|cut -d: -f2|uniq`
  214.   CPU_SPEED=`cat /proc/cpuinfo |grep -i "bogomips"|cut -d: -f2|cut -d. -f1|uniq`
  215.   CPU="$CPU_MODEL ($CPU_SPEED bogomips)"
  216. fi
  217. LINES=`wc -l /etc/passwd|awk '{print $1}'`
  218. ACCOUNTS=`expr $LINES - 21`
  219. NBUG=`awk -F: '{if (length($1) > 8 ) print $1}' /etc/passwd|wc -l`
  220.  
  221. # Renseignement de la base centrale (table slis)
  222. logger -t "$LOGTAG" "Supervision: update base centrale."
  223. HOST=`echo $HOSTNAME|sed "s/\.$DOMAIN//"`
  224. psql -h $SQL_SERVER sliss -tqc "delete from slis where nom='$HOST'"
  225. psql -h $SQL_SERVER sliss -tqc "insert into slis 
  226. (nom,mail_admin,tel_admin,prenom_admin,nom_admin,version,date,mem,uptime,charge,cpu_model,n_accounts,n_bug)
  227. values ('$HOST','$MAIL_ADMIN','$TEL_ADMIN','$PRENOM_ADMIN','$NOM_ADMIN','$VERSION_SLIS',now(),'$MEM','$UPTIME','$LOAD','$CPU','$ACCOUNTS','$NBUG')"
  228.  
  229. # Recuperation d'un df et envoi <E0> la base centrale (table df)
  230. psql -h $SQL_SERVER sliss -tqc "delete from df where slis='$HOST'"
  231. R=$RANDOM
  232. df -k > /tmp/df.$R
  233. grep -v Filesystem /tmp/df.$R| sed "s/%//g" | \
  234.  awk -v host=$HOST -v psql=$PSQL \
  235.  '{print psql " \"insert into df (slis,part,size,free,used_percent,mount) values (\x27" host "\x27,\x27" $1 "\x27,\x27" $2 "\x27,\x27" $4 "\x27,\x27" $5 "\x27,\x27" $6 "\x27)\"" }' > /tmp/df.sql.$R
  236. bash /tmp/df.sql.$R
  237. rm -rf /tmp/df.$R
  238.  
  239. # Envoi des adresses ip des interfaces
  240. psql -h $SQL_SERVER sliss -tqc "delete from ip where slis='$HOST'"
  241.  
  242. for if in `/bin/netstat -i|awk '{if (NR>2) print $1}'`
  243. do
  244.   ip=`/sbin/ifconfig $if |grep "inet ad"|awk -F":" '{print $2}'|awk '{print $1}'`
  245.   psql -h $SQL_SERVER sliss -tqc "insert into ip (ip,if,slis) values ('$ip','$if','$HOST')"
  246. done
  247.  
  248. # Etat des services et envoi <E0> la base centrale (table pservices)
  249. SENDMAIL=0;SQUID=0;HTTP=0;HADMIN=0;ADMIND=0;SYSLOG=0;NAMED=0
  250. INETD=0;POSTMASTER=0
  251. if [ "`ps awux |grep sendmail|grep -v grep`" != "" ]
  252. then
  253.   SENDMAIL="1"
  254. fi
  255. if [ "`/bin/ps awux |grep squid|grep -v grep`" != "" ]
  256. then
  257.   SQUID="1"
  258. fi
  259. if [ "`/bin/ps awux |grep httpd|grep nobody|grep -v grep`" != "" ]
  260. then
  261.   HTTP="1"
  262. fi
  263. if [ "`/bin/ps awux |grep httpd|grep hadmin|grep -v grep`" != "" ]
  264. then
  265.   HADMIN="1"
  266. fi
  267. if [ "`/bin/ps awux |grep admind|grep -v grep`" != "" ]
  268. then
  269.   ADMIND="1"
  270. fi
  271. if [ "`/bin/ps awux |grep syslog|grep -v grep`" != "" ]
  272. then
  273.   SYSLOG="1"
  274. fi
  275. if [ "`/bin/ps awux |grep inetd|grep -v grep`" != "" ]
  276. then
  277.   INETD="1"
  278. fi
  279. if [ "`/bin/ps awux |grep named|grep -v grep`" != "" ]
  280. then
  281.   NAMED="1"
  282. else
  283.   /etc/rc.d/init.d/named stop
  284.   /usr/sbin/named
  285.   sleep 1
  286.   if [ "`/bin/ps awux |grep named|grep -v grep`" != "" ]
  287.   then
  288.     NAMED="1"
  289.   fi
  290. fi
  291. if [ "`/bin/ps awux |grep postmaster|grep -v grep`" != "" ]
  292. then
  293.   POSTMASTER="1"
  294. else
  295.   /etc/rc.d/init.d/postgresql start
  296.   sleep 2
  297.   if [ "`/bin/ps awux |grep postmaster|grep -v grep`" != "" ]
  298.   then
  299.     POSTMASTER="1"
  300.   fi
  301. fi
  302. psql -h $SQL_SERVER sliss -tqc "delete from services where nom='$HOST'"
  303. psql -h $SQL_SERVER sliss -tqc "insert into services 
  304. (nom,sendmail,squid,http,hadmin,admind,syslog,named,inetd,postmaster)
  305. values ('$HOST','$SENDMAIL','$SQUID','$HTTP','$HADMIN','$ADMIND','$SYSLOG','$NAMED','$INETD','$POSTMASTER')"
  306.  
  307. logger -t "$LOGTAG" "Supervision FIN."
  308.  
  309. ##############################
  310. logger -t "$LOGTAG" "Script Academie Termine."
  311.  
  312. /bin/rm -rf /var/lock/slis_upd
  313.  
  314.