[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |