Index: scripts/ldap/generacion_listados_inicio_curso_pdf.sh
===================================================================
--- scripts/ldap/generacion_listados_inicio_curso_pdf.sh	(nonexistent)
+++ scripts/ldap/generacion_listados_inicio_curso_pdf.sh	(revision 398)
@@ -0,0 +1,252 @@
+#!/bin/bash
+
+#Version 2.3
+#Fecha 8/10/2012
+#Autores: Alfonso Pastor. IES Virgen de Guadalupe-Cáceres.
+#         José María Sánchez García. IES Parque de Monfragüe.
+#               impresión de cada grupo de alumnos en una hoja distinta, evitando que queden cortadas entre pagina y pagina.
+#         Fernando Sosa. IES Zurbaran-Badajoz.
+#               posibilidad de ordenar cada tabla de grupo por diferentes campos. 
+#               ORDENAR_POR=[apellidos|nie|password|usuario|nombre|nada]
+#               Log con todos los datos generados por si es util para otros fines
+#               LOG=/tmp/tabla_grupos_alumnos
+#Cometido: Extrae datos del fichero Alumnos.xml generado por Rayuela, despues de haberlos importado en LDAP. 
+#          Construye un fichero html y, si esta instalado wkhtmltopdf, un PDF de grupos y alumnos, con los datos de login y contraseña. 
+
+#AVISO: por las herramientas que utiliza este script no debe ejecutarse en el servidor ldap, mejor ejecutarlo en un 
+#       workstation normal y corriente que tenga acceso a ldap.
+
+#ORDENAR_POR=[apellidos|nie|password|usuario|nombre|nada]
+ORDENAR_POR=apellidos
+
+LOG=/tmp/tabla_grupos_alumnos
+:> $LOG
+
+if [ ! -e /usr/bin/xmlstarlet ]
+then
+   echo "Falta xmlstarlet, hay que instalarlo con apt-get install xmlstarlet"
+   exit
+fi
+
+if [ ! -e /usr/bin/ldapsearch ]
+then
+   echo "Falta ldapsearch, hay que instalarlo con apt-get install ldap-utils"
+   exit
+fi
+
+curso="2012/13"
+
+case $# in
+  4)
+     grupofiltro="TODOS"
+  ;;
+  5)
+     grupofiltro=$5
+  ;;
+  *)
+      echo "Uso: $0 <fichero xml alumnos> <fichero xml grupos> <fichero xml profesores> <fichero html salida> [<grupo a procesar>]" 
+      exit
+  ;;
+esac
+
+
+echo "Iniciando proceso...."
+
+echo "Obteniendo la lista de grupos"
+codigo=$(xmlstarlet sel -t -m "/grupos-centro/centro" -v "codigo"  -n $2)
+if [ -z $codigo ]
+then
+  echo "El fichero indicado como segundo parametro ($2) no parece ser un fichero de exportación de grupos de Rayuela"
+  echo "Abortando proceso"
+  exit
+fi
+
+
+xmlstarlet sel -t -m "/grupos-centro/curso/grupo-curso" -v "concat(nombre-grupo,':',dni-tutor-grupo,':',../nombre-curso)" -n $2 > /tmp/grupos.txt
+codificacion=$(file -i /tmp/grupos.txt | cut -d"=" -f2)
+#Si no estan en utf-8 los convertimos a dicho formato
+if [ "$codificacion" != "utf-8" ]
+then
+    echo "Convirtiendo grupos..."
+    iconv -t UTF8//IGNORE -f $codificacion /tmp/grupos.txt > /tmp/grupos2.txt
+else
+    cp /tmp/grupos.txt /tmp/grupos2.txt
+fi
+
+if [ "$grupofiltro" != "TODOS" ]
+then
+  lineagrupo=$(grep "^${grupofiltro}:" /tmp/grupos2.txt | cut -d: -f1)
+  if [ -z "$lineagrupo" ]
+  then
+      echo "El grupo indicado ($grupofiltro) no aparece en la lista de grupos bajada de Rayuela."
+      echo "Verifique que lo ha escrito IGUAL que aparece en la lista de grupos. Si tiene espacios en blanco intermedios, entrecomille el nombre del grupo."
+      echo ""
+      echo "Esta es la lista de grupos descargados (el nombre que debe usar aparece al principio antes de los dos puntos):"
+      echo ""
+      cat /tmp/grupos2.txt
+      exit
+  else
+#Si está en la lista
+#Borramos todos los grupos y dejamos solo el que queremos procesar.    
+       echo "Grupo $grupofiltro encontrado correctamente."
+       grep "^${grupofiltro}:" /tmp/grupos2.txt > /tmp/grupos1.txt
+       mv /tmp/grupos1.txt /tmp/grupos2.txt
+  fi
+fi
+
+echo "Obteniendo la lista de alumnos"
+codigo=$(xmlstarlet sel -t -m "/alumnado-centro/centro" -v "codigo"  -n $1)
+if [ -z $codigo ]
+then
+  echo "El fichero indicado como primer parametro ($1) no parece ser un fichero de exportación de alumnos de Rayuela" 
+  echo "Abortando proceso"
+  exit
+fi
+
+
+xmlstarlet sel -t -m "/alumnado-centro/alumno" -v "concat(grupo,':',nombre,':',primer-apellido,' ',segundo-apellido,':',fecha-nacimiento,':',nie)" -n $1 >  /tmp/alumnos.txt
+codificacion=$(file -i /tmp/alumnos.txt | cut -d"=" -f2)
+#Si no estan en utf-8 los convertimos a dicho formato
+if [ "$codificacion" != "utf-8" ]
+then
+    echo "Convirtiendo alumnos..."
+    iconv -t UTF8//IGNORE -f $codificacion /tmp/alumnos.txt > /tmp/alumnos2.txt
+else
+     cp /tmp/alumnos.txt /tmp/alumnos2.txt
+fi
+
+echo "Obteniendo la lista de profesores"
+codigo=$(xmlstarlet sel -t -m "/profesorado-centro/centro" -v "codigo"  -n $3)
+if [ -z $codigo ]
+then
+  echo "El fichero indicado en como tercer parametro ($3) no parece ser un fichero de exportación de profesores de Rayuela" 
+  echo "Abortando proceso"
+  exit
+fi
+
+xmlstarlet sel -t -m "/profesorado-centro/profesor" -v "concat(dni,':',nombre,' ',primer-apellido,' ',segundo-apellido)" -n $3 >  /tmp/profes.txt
+codificacion=$(file -i /tmp/profes.txt | cut -d"=" -f2)
+#Si no estan en utf-8 los convertimos a dicho formato
+if [ "$codificacion" != "utf-8" ] 
+then
+    echo "Convirtiendo profesores..."
+    iconv -t UTF8//IGNORE -f $codificacion /tmp/profes.txt > /tmp/profes2.txt
+else
+     cp /tmp/profes.txt /tmp/profes2.txt
+fi
+
+
+echo -n "Contraseña de administrador de la BBDD ldap: "
+read pwd
+
+consulta=$(ldapsearch  -w $pwd -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -xLLL -h ldap -b "ou=People,dc=instituto,dc=extremadura,dc=es" "cn=admin")
+if [ -z "$consulta" ]
+then
+   echo "La contraseña es incorrecta o bien no hay conexión con ldap"
+   echo "Proceso abortado"
+   exit
+fi
+
+echo "Empiezo del proceso. Se ordenará cada grupo por $ORDENAR_POR"
+
+
+#Generamos el html en utf8
+echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/><style>table {page-break-after:always;}</style></head><body><div style='width: 800px'>" > $4
+
+
+echo "<h1><p align="center">Listados claves alumnos curso $curso </p></h1>" >> $4
+
+echo "" >> $4
+echo "" > /tmp/alumtemp.txt
+while read lineagrupo
+do
+    grupo=$(echo $lineagrupo | cut -d: -f1)
+    echo "Procesando grupo: $grupo"
+    tutor=$(echo $lineagrupo | cut -d: -f2)
+    nombre_curso=$(echo $lineagrupo | cut -d: -f3)
+    nombre_tutor=$(grep "^$tutor:" /tmp/profes2.txt | cut -d: -f2)
+
+    echo "<table width='100%' border=1>" >> $4
+    echo "<tr bgcolor='#CCCCCC'>" >> $4
+    echo "<td colspan='2' width='50%'>Grupo: $grupo - $nombre_curso</td>"  >> $4
+    echo "<td colspan='2'>Tutor: $tutor - $nombre_tutor</td>" >> $4
+    echo "</tr" >> $4
+
+    case "$ORDENAR_POR" in
+	    "nie") grep "^$grupo:" /tmp/alumnos2.txt | sort -k1 -t':' >> /tmp/alumtemp.txt
+	      ;;
+	    "nombre") grep "^$grupo:" /tmp/alumnos2.txt | sort -k2 -t':' >> /tmp/alumtemp.txt
+	      ;;
+	    "apellidos") grep "^$grupo:" /tmp/alumnos2.txt | sort -k3 -t':' >> /tmp/alumtemp.txt
+	      ;;
+	    "password") grep "^$grupo:" /tmp/alumnos2.txt | sort -k4 -t':' >> /tmp/alumtemp.txt
+	      ;;
+	    "usuario") grep "^$grupo:" /tmp/alumnos2.txt | sort -k5 -t':' >> /tmp/alumtemp.txt
+	      ;;
+	    *) grep "^$grupo:" /tmp/alumnos2.txt  >> /tmp/alumtemp.txt
+	      ;;
+    esac
+
+    echo "<tr bgcolor='#F0F8FF'>" >> $4        
+    echo "<td>NIF/NIE</td><td>Nombre</td><td>Contrase&ntilde;a</td><td>Usuario</td>" >> $4
+    echo "</tr>" >> $4
+
+    while read linea
+    do
+
+         grupo=$(echo $linea | cut -d: -f1)
+         nombre=$(echo $linea | cut -d: -f2)
+         apellidos=$(echo $linea | cut -d: -f3)
+         fecha=$(echo $linea | cut -d: -f4)
+         nie=$(echo $linea | cut -d: -f5)
+         password=$(echo $fecha | sed "s?/??g")
+
+         if [ ! -z "$nie" ]
+         then
+		 login=$(ldapsearch  -w $pwd -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -xLLL -h ldap -b "ou=People,dc=instituto,dc=extremadura,dc=es" "employeeNumber=$nie" "uid" | grep  "uid:" | cut -f2 -d" ")
+		 if [ -z "$login" ]
+		 then
+		     echo "       ERROR ------------> no se ha encontrado login para $nombre"
+		     login="No encontrado"
+		 else
+		     echo "       Procesando $nombre con login: $login"
+		 fi
+		 echo "<tr>" >> $4       
+		 echo "<td>$nie</td><td>$nombre $apellidos</td><td>$password</td><td>$login</td>" >> $4
+		 echo "</tr>" >> $4
+         fi
+
+	echo "$grupo:$nombre:$apellidos:$login:$password:$nie:" >> $LOG
+
+    done < "/tmp/alumtemp.txt"
+    rm "/tmp/alumtemp.txt"
+    echo "</table><br/><br/><br/>" >> $4
+
+done < "/tmp/grupos2.txt"
+
+echo "</div></body></html>" >> $4
+
+echo "Generado $4 correctamente." 
+
+if [ -e /usr/bin/wkhtmltopdf ]
+then
+      echo "Generando PDF..."
+      nombresinext=$(basename "$4" .html)
+      wkhtmltopdf "$4" "$nombresinext.pdf"
+      echo "Generado $nombresinext.pdf correctamente."
+else
+     echo "No existe el programa /usr/bin/wkhtmltopdf, genere el PDF manualmente abriendolo con el Firefox e imprimiendolo en un archivo tipo PDF."
+fi
+
+rm /tmp/alumnos.txt
+rm /tmp/grupos.txt
+rm /tmp/profes.txt
+rm /tmp/alumnos2.txt
+rm /tmp/grupos2.txt
+rm /tmp/profes2.txt
+echo "log en $LOG"
+
+
+
+
+
