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 / process_queue-1.x < prev    next >
Text File  |  2001-02-01  |  9KB  |  355 lines

  1. #!/bin/bash
  2.  
  3. # Process queue hadmin
  4. # Version 1.17
  5.  
  6. # This script is part of the SLIS Project initiated by the CARMI-Internet
  7. # (AcadΘmie de Grenoble - France 38).
  8. # Ce script fait partie du projet SLIS dΘmarrΘ par le CARMI-Internet
  9. # (AcadΘmie de Grenoble - France 38).
  10. #
  11. # SLIS : Serveur de communications Linux Pour l'Internet Scolaire.
  12. # Copyright (C) 1998-2000 Bruno Bzeznik
  13. #
  14. #    This program is free software; you can redistribute it and/or modify
  15. #    it under the terms of the GNU General Public License as published by
  16. #    the Free Software Foundation; either version 2 of the License, or
  17. #    (at your option) any later version.
  18. #
  19. #    This program is distributed in the hope that it will be useful,
  20. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  22. #    GNU General Public License for more details.
  23. #    You should have received a copy of the GNU General Public License
  24. #    along with this program (For example ./COPYING);
  25. #    if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  26. #    Cambridge, MA 02139, USA.
  27. #
  28. # Please send all comments and bug reports by electronic mail to:
  29. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  30. # or to <slis@ac-grenoble.fr>
  31. #
  32. # Envoyez vos suggestions et reports de bugs par e-mail α
  33. #   Bruno Bzeznik <Bruno@ac-grenoble.fr>
  34. # ou α <slis@ac-grenoble.fr>
  35. #
  36.  
  37. ######################
  38. # VARIABLES GLOBALES #
  39. ######################
  40.  
  41. . /home/hadmin/slis.conf
  42.  
  43. BINDIR=$SLIS_BINDIR
  44. ETRN=$SLIS_BINDIR/etrn
  45. MAILHUB=$SMART_HOST
  46. POPSHELL=/bin/false
  47. MAIL_ADMIN=`grep @ /home/hadmin/cgi-bin/base/params_admin.txt | grep "."`
  48. LANG=C
  49. LOGTAG="-t process_queue[$$] -p $LOG_FACILITY.notice"
  50.  
  51. #####################
  52. # INITIALISATION    #
  53. #####################
  54. rm -rf $QUEUE/tbp
  55. rm -rf $QUEUE/result
  56. touch $QUEUE/result
  57.  
  58. # Fichier d'enregistrement des erreurs
  59. if [ ! \( -f $QUEUE/error_log \) ]
  60. then
  61.   touch $QUEUE/error_log
  62.   chmod 600 $QUEUE/error_log 
  63.   chown hadmin.hadmin $QUEUE/error_log
  64. fi
  65.  
  66. # Gestion d'un lock
  67. if [ -f $QUEUE/lock ]
  68. then
  69.   logger $LOGTAG "Fichier lock trouve. Aborting."
  70.   echo "La file d'attente des operations non validees n'a pas pu etre
  71. traitee car une autre validation est deja en cours. Si ce probleme
  72. persiste, contactez support-hadmin@ac-grenoble.fr" >> $QUEUE/result
  73.   cat $QUEUE/result | mail -s "Resultats de votre validation - Erreur" $MAIL_ADMIN
  74.   DATE=`date`
  75.   echo "$DATE: $LOGTAG : Fichier lock trouve. Abort." >> $QUEUE/error_log
  76.   exit 1
  77. else 
  78.   touch $QUEUE/lock
  79. fi
  80.  
  81. # Affichage dans la syslog.
  82. logger $LOGTAG "Processing admin queue..."
  83.  
  84. ##########################################
  85. # Vidage de la mailqueue sur le mailhub. #
  86. ##########################################
  87. if [ -f $QUEUE/etrn ]
  88. then
  89.   if [ -f $ETRN ]
  90.   then
  91.     rm -rf $QUEUE/etrn
  92.     logger $LOGTAG "Envoi de  commande ETRN sur $MAILHUB."
  93.     $ETRN $MAILHUB
  94.   else
  95.     logger $LOGTAG "Commande $ETRN non trouvee."
  96.   fi
  97.   logger $LOGTAG "Vidage mqueue (sendmail -q)."
  98.   /usr/sbin/sendmail -q 2> /dev/console
  99. fi
  100.  
  101. ############################
  102. # Creation de comptes pop. #
  103. ############################
  104. if [ -f $QUEUE/users_pop ]
  105. then
  106.   for i in `awk '{print NR}' $QUEUE/users_pop`
  107.   do
  108.     # Lecture des parametres du fichier d'entree de la queue.
  109.     LOGIN=`awk -v I=$i -F: '{if (NR == I) print $1}' $QUEUE/users_pop`
  110.     PASSW=`awk -v I=$i -F: '{if (NR == I) print $2}' $QUEUE/users_pop`
  111.     CPASS=`awk -v I=$i -F: '{if (NR == I) print $3}' $QUEUE/users_pop`
  112.     COMMT=`awk -v I=$i -F: '{if (NR == I) print $4}' $QUEUE/users_pop`
  113.     ALIAS=`awk -v I=$i -F: '{if (NR == I) print $5}' $QUEUE/users_pop`
  114.     echo  >> $QUEUE/result
  115.     echo "Creation de l'utilisateur $COMMT" >> $QUEUE/result
  116.     # Creation proprement dite.
  117.     /usr/sbin/useradd -p $CPASS -s $POPSHELL -c "$COMMT" $LOGIN 2>> $QUEUE/error_log
  118.     RETURNCODE=$?
  119.     echo -n "Resultat : " >> $QUEUE/result
  120.     if [ $RETURNCODE = "0" ]
  121.     then
  122.       # Creation de l'alias
  123.       echo "$ALIAS: $LOGIN" >> /etc/aliases
  124.       # Composition du message a l'administrateur.
  125.       echo "OK" >> $QUEUE/result
  126.       echo "   Nom d'utilisateur : " $LOGIN >> $QUEUE/result
  127.       echo "   Mot de passe      : " $PASSW >> $QUEUE/result
  128.       echo "   E-mail            : " $ALIAS@$HOSTNAME >> $QUEUE/result
  129.       # Ajout dans la base.
  130.       echo "$LOGIN:$PASSW:$CPASS:$COMMT:$POPSHELL:$ALIAS" >> $BASE/users
  131.     fi
  132.     # Gestion des erreurs
  133.     if [ $RETURNCODE = "9" ]
  134.     then
  135.       echo "Utilisateur deja existant... non cree." >> $QUEUE/result
  136.     fi
  137.     if [ $RETURNCODE != "9" -a $RETURNCODE != "0" ]
  138.     then
  139.       echo "Erreur... Utilisateur non cree." >> $QUEUE/result
  140.     fi
  141.   done
  142.   /usr/bin/newaliases
  143.   rm -rf $QUEUE/users_pop
  144. fi
  145.  
  146. ############################
  147. # Suppression de comptes    #
  148. ############################
  149. if [ -f $QUEUE/users_del ]
  150. then
  151.   for i in `awk '{print NR}' $QUEUE/users_del`
  152.   do
  153.     LOGIN=`awk -v I=$i -F: '{if (NR == I) print $1}' $QUEUE/users_del`
  154.     DELBOX=`awk -v I=$i -F: '{if (NR == I) print $2}' $QUEUE/users_del`
  155.     echo  >> $QUEUE/result
  156.     echo "Suppression de l'utilisateur $LOGIN" >> $QUEUE/result
  157.     /usr/sbin/userdel $LOGIN 2>> $QUEUE/error_log
  158.     RETURNCODE=$?
  159.     /usr/sbin/groupdel $LOGIN 2>> $QUEUE/error_log
  160.     echo -n "Resultat : " >> $QUEUE/result
  161.     if [ $RETURNCODE = "0" ]
  162.     then
  163.       if [ $DELBOX = "0" ]
  164.       then
  165.         rm -rf /var/spool/mail/$LOGIN
  166.         rm -rf /home/$LOGIN
  167.       fi
  168.       echo "OK" >> $QUEUE/result
  169.       # Suppression de l'entree dans la base
  170.       rm -rf $BASE/users.new
  171.       grep -v "$LOGIN:" $BASE/users > $BASE/users.new
  172.       rm -rf $BASE/users
  173.       mv $BASE/users.new $BASE/users
  174.     fi
  175.     if [ $RETURNCODE != "0" ]
  176.     then
  177.       echo "Erreur... Utilisateur non supprime." >> $QUEUE/result
  178.     fi
  179.   done
  180.   # Suppression des aliases
  181.   $BINDIR/clean_aliases
  182.   rm -rf $QUEUE/users_del
  183. fi
  184.  
  185. ######################
  186. # Aliases            #
  187. ######################
  188. if [ -f $QUEUE/users_alias ]
  189. then
  190.   $BINDIR/process_users_alias >> $QUEUE/result
  191.   logger $LOGTAG "Ajout d'aliases."
  192. fi
  193. if [ -f $QUEUE/users_alias_del ]
  194. then
  195.   $BINDIR/process_users_alias >> $QUEUE/result
  196.   logger $LOGTAG "Suppression d'aliases."
  197. fi
  198.  
  199. ####################
  200. # Reboot / Halt    #
  201. ####################
  202. if [ -f $QUEUE/reboot ]
  203. then
  204.   logger $LOGTAG "Redemarrage demande."
  205.   rm -rf $QUEUE/reboot
  206.   /sbin/shutdown -r now "Redemarrage pour maintenance - hadmin"
  207. fi
  208. if [ -f $QUEUE/halt ]
  209. then
  210.   logger $LOGTAG "Arret demande."
  211.   rm -rf $QUEUE/halt
  212.   /sbin/shutdown -h now "Arret du systeme - hadmin"
  213. fi
  214.  
  215. ######################
  216. # Mise α jour forcΘe #
  217. ######################
  218. if [ -f $QUEUE/update ]
  219. then
  220.   rm -rf $QUEUE/update
  221.   $BINDIR/slis_update.cron 2>> $QUEUE/error_log
  222. fi
  223.  
  224. ######################
  225. # Filtrage IP        #
  226. ######################
  227. if [ -f $QUEUE/filtrage_ip ]
  228. then
  229.   logger $LOGTAG "Modification filtrage_ip."
  230.   $BINDIR/process_filtrage_ip
  231.   rm -rf $QUEUE/filtrage_ip
  232. fi
  233.  
  234. ######################
  235. # Filtrage URL       # OBSOLETE!
  236. ######################
  237. if [ -f $QUEUE/denied_url -o -f $QUEUE/denied_url_purge ]
  238. then
  239.   logger $LOGTAG "Modification filtrage_url."
  240.   $BINDIR/process_filtrage_url
  241.   rm -rf $QUEUE/denied_url
  242. fi
  243.  
  244. ###########################
  245. # Filtrage par squidGuard #
  246. ###########################
  247. if [ -f $QUEUE/squid_guard ]
  248. then
  249.   logger $LOGTAG "Modification filtrage squidguard"
  250.   $BINDIR/process_filtrage_squidguard
  251.   rm -rf $QUEUE/squid_guard
  252. fi
  253.  
  254. ####################
  255. # Routage on / off #
  256. ####################
  257. if [ -f $QUEUE/routage_off ]
  258. then
  259.   logger $LOGTAG "Arret routage demande"
  260.   rm -rf $QUEUE/routage_off
  261.   $BINDIR/routage_off
  262. fi
  263. if [ -f $QUEUE/routage_on ]
  264. then
  265.   logger $LOGTAG "Mise en marche routage demande"
  266.   rm -rf $QUEUE/routage_on
  267.   $BINDIR/routage_on
  268. fi
  269.  
  270. ######################
  271. # Subnets / horaires #
  272. ######################
  273. if [ -f $QUEUE/subnets ]
  274. then
  275.   $BINDIR/process_subnets
  276.   logger $LOGTAG "Modif etat des subnets."
  277. fi
  278. if [ -f $QUEUE/subn_hor ]
  279. then
  280.   $BINDIR/process_subnets
  281.   logger $LOGTAG "Modif des horaires subnets."
  282. fi
  283. if [ -f $QUEUE/subnets_cron ]
  284. then
  285.   sleep 5
  286.   for i in `ls $QUEUE/subnets_cron.*`
  287.   do
  288.   if [ ! \( "$i" = "" \) ]
  289.   then
  290.     bash $i
  291.     rm -rf $i
  292.   fi
  293.   done
  294.   rm -rf $QUEUE/subnets_cron
  295.   logger $LOGTAG "Modif etat des subnets par cron."
  296. fi
  297.  
  298. ######################
  299. # Gestion du web     #
  300. ######################
  301. if [ -f $QUEUE/webmaster ]
  302. then
  303.   $BINDIR/process_web
  304.   logger $LOGTAG "Modif webmaster."
  305. fi
  306. if [ -f $QUEUE/webreplic ]
  307. then
  308.   $BINDIR/process_web
  309.   logger $LOGTAG "Replication du web."
  310. fi
  311.  
  312. ######################
  313. # Groupes cyberecole #
  314. ######################
  315. if [ -f $QUEUE/cybgroups ]
  316. then
  317.   rm -rf $QUEUE/cybgroups
  318.   $BINDIR/process_cybgroups
  319.   logger $LOGTAG "Modif groupes cyberecole."
  320. fi
  321.  
  322. ######################
  323. # VNC              #
  324. ######################
  325. if [ -f $QUEUE/vnc ]
  326. then
  327.   rm -rf $QUEUE/vnc
  328.   $BINDIR/process_vnc
  329.   logger $LOGTAG "Lancement de process_vnc."
  330. fi
  331.  
  332. ######################
  333. # DHCP              #
  334. ######################
  335. if [ -f $QUEUE/dhcp ]
  336. then
  337.   rm -rf $QUEUE/dhcp
  338.   $BINDIR/process_dhcp
  339.   logger $LOGTAG "Lancement de process_dhcp."
  340. fi
  341.  
  342. ####################
  343. # Envoi du rapport #
  344. ####################
  345. if [ -s $QUEUE/result ]
  346. then
  347.   cat $QUEUE/result | mail -s "Resultats de votre validation" $MAIL_ADMIN
  348. fi
  349.  
  350. rm -rf $QUEUE/result
  351. rm -rf $QUEUE/lock
  352.  
  353. logger $LOGTAG "Processing queue termine."
  354.  
  355.