[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clonage/sources/sbin/ -> controle_actions_tftp.sh (source)

   1  #!/bin/bash
   2  
   3  # $Id: controle_actions_tftp.sh 8375 2015-01-10 23:16:02Z keyser $
   4  #
   5  # Script à lancer régulièrement pour scruter le /var/log/syslog
   6  # de façon à trouver si un boot a été effectué sur le choix indiqué en
   7  # /tftpboot/pxelinux.cfg/01-$MAC depuis la dernière action programmée.
   8  # Si oui, on supprime le /tftpboot/pxelinux.cfg/01-$MAC pour ne pas relancer la tâche
   9  #
  10  # Auteur: Stephane Boireau
  11  # Dernière modification: 05/02/2008
  12  #
  13  # Attention: Si on modifie le /etc/inetd.conf en ajoutant un --logfile /var/log/atftpd.log pour atftpd
  14  #            et touch /var/log/atftpd.log && chown nobody:nogroup /var/log/atftpd.log
  15  #            le fichier de conf à considérer n'est plus le même.
  16  #            Ce changement permet d'alléger le syslog... et rendre les recherches grep moins lourdes,
  17  #            mais chez moi la modif n'a pris qu'après un redémarrage de la machine.
  18  #            (un killall -HUP inetd n'a pas suffit)
  19  logfile=/var/log/syslog
  20  
  21  if [ ! -e "/var/run/rsyslogd.pid" ]; then
  22      /usr/sbin/service rsyslog start
  23  fi
  24  # echo "*/2 * * * * root /usr/share/se3/sbin/controle_actions_tftp.sh" > /etc/cron.d/se3_action_tftp
  25  
  26  test_mysql=$(ps aux | grep "/usr/sbin/mysqld" | grep "/var/run/mysqld/mysqld.pid" | grep -v "grep")
  27  if [ -z "$test_mysql" ]; then
  28      # MySQL ne tourne pas, on ne va pas plus loin
  29      exit
  30  fi
  31  
  32  #Couleurs
  33  COLTITRE="\033[1;35m"   # Rose
  34  COLPARTIE="\033[1;34m"  # Bleu
  35  COLTXT="\033[0;37m"     # Gris
  36  COLCHOIX="\033[1;33m"   # Jaune
  37  COLDEFAUT="\033[0;33m"  # Brun-jaune
  38  COLSAISIE="\033[1;32m"  # Vert
  39  COLCMD="\033[1;37m"     # Blanc
  40  COLERREUR="\033[1;31m"  # Rouge
  41  COLINFO="\033[0;36m"    # Cyan
  42  
  43  ERREUR()
  44  {
  45  echo -e "$COLERREUR"
  46  echo "ERREUR!"
  47  echo -e "$1"
  48  echo -e "$COLTXT"
  49  exit 1
  50  }
  51  
  52  FICHDEBUG()
  53  {
  54      active_debug="n"
  55      if [ "$active_debug" = "y" ]; then
  56          echo "$1" >> /var/log/atftpd_se3_actions.log
  57      fi
  58  }
  59  
  60  WWWPATH="/var/www"
  61  
  62  if [ -e $WWWPATH/se3/includes/config.inc.php ]; then
  63      dbhost=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f2 | cut -d \" -f2`
  64      dbname=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 |cut -d \" -f 2`
  65      dbuser=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 | cut -d \" -f 2`
  66      dbpass=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 | cut -d \" -f 2`
  67  else
  68      ERREUR "Fichier de configuration inaccessible, le script ne peut se poursuivre."
  69  fi
  70  
  71  #verif=$(echo "SHOW TABLES LIKE se3_tftp_action;" | mysql -h $dbhost -u$dbuser -p$dbpass $dbname)
  72  #if [ -z "$verif" ]; then
  73  if [ ! -e "/var/lib/mysql/se3db/se3_tftp_action.frm" ]; then
  74      # Aucune action n'a encore été initialisée et la table n'existe pas.
  75      exit
  76  fi
  77  
  78  FICHDEBUG "=============================="
  79  FICHDEBUG "$(date)"
  80  FICHDEBUG "SELECT DISTINCT mac FROM se3_tftp_action;"
  81  #FICHDEBUG "SELECT DISTINCT mac FROM se3_tftp_action UNION SELECT DISTINCT mac FROM se3_tftp_rapports;"
  82  #echo "SELECT DISTINCT mac FROM se3_tftp_action UNION SELECT DISTINCT mac FROM se3_tftp_rapports;" | mysql -h $dbhost -u$dbuser -p$dbpass $dbname | while read mac
  83  echo "SELECT DISTINCT mac FROM se3_tftp_action;" | mysql -h $dbhost -u$dbuser -p$dbpass $dbname | while read mac
  84  do
  85      # Pour passer la première ligne indiquant le nom des champs
  86      if [ "$mac" != "mac" -a ! -z "$mac" ]; then
  87          FICHDEBUG "mac=$mac"
  88          corrige_mac=$(echo "$mac" | tr ":[A-Z]" "\-[a-z]")
  89          FICHDEBUG "corrige_mac=$corrige_mac"
  90          FICHDEBUG "SELECT date FROM se3_tftp_action WHERE mac='$mac';"
  91          echo "SELECT date FROM se3_tftp_action WHERE mac='$mac';" | mysql -h $dbhost -u$dbuser -p$dbpass $dbname | while read date
  92          do
  93              # Pour passer la première ligne indiquant le nom des champs
  94              if [ "$date" != "date" -a ! -z "$date" ]; then
  95                  FICHDEBUG "date=$date"
  96                  grep atftp $logfile | sed -e "s/ \{2,\}/ /g" | grep -i "Serving pxelinux.cfg/01-$corrige_mac} to " | cut -d" " -f1-3 | while read A
  97                  do
  98                      FICHDEBUG "log_date=$A"
  99                      date_pxeboot=$(date --date="$A" +%s)
 100                      FICHDEBUG "date_pxeboot=$date_pxeboot"
 101                      if [ $date_pxeboot} -ge $date} ]; then
 102                          echo "DELETE FROM se3_tftp_action WHERE mac='$mac' AND date='$date';" | mysql -h $dbhost -u$dbuser -p$dbpass $dbname
 103                          FICHDEBUG "DELETE FROM se3_tftp_action WHERE mac='$mac' AND date='$date';"
 104                          rm /tftpboot/pxelinux.cfg/01-$corrige_mac}
 105                          #mv /tftpboot/pxelinux.cfg/01-${corrige_mac} /tftpboot/pxelinux.cfg/01-${corrige_mac}_servi_le_$(echo "$A" | tr " :" "_\-")
 106                      fi
 107                  done
 108              fi
 109          done
 110      fi
 111  
 112      # Remarque: On ne devrait normalement ne faire qu'un tour au plus dans chaque boucle mac et date.
 113  done
 114  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1