Index: scripts/ltsp-server/autoconfiguracion/copiainicial
===================================================================
--- scripts/ltsp-server/autoconfiguracion/copiainicial	(nonexistent)
+++ scripts/ltsp-server/autoconfiguracion/copiainicial	(revision 430)
@@ -0,0 +1,142 @@
+#!/usr/bin/env python
+# coding: latin1
+#
+# Descripcion:
+#	- Este script comprueba todas las interfaces de red de la maquina
+#	  hasta que obtiene conexion.
+#	- Pregunta a ldap a que aula pertenece.
+#	- Descarga del servidor NFS los archivos 70-persistent-net.rules y de aulalinex
+#	- Se reinicia con las interfaces de red correctamente configuradas
+#
+# Modo de uso:
+# En el servidor NFS:
+# - Ejecutar el script backupltsp.sh (Tiene que tener 
+#   relacion de confianza SSH con los servidores de aula)
+#
+# En el servidor de aula:
+# - Copiar el script copiainicial a /root/copiainicial y hacerlo ejecutable
+# - Editar el fichero /etc/rc.local e insertar la linea /root/copiainicicial
+# - Instalar el paquete python-ldap
+# - Borrar el fichero /etc/udev/rules.d/70-persistent-net.rules
+# - Al reiniciar, el script se ejecutara una unica vez
+#
+# Fecha   : 13/11/2012
+# Autores	: Francisco Damian Mendez Palma
+#           Manuel Mora Gordillo
+#           IES Santa Eulalia - Merida
+
+import socket
+import fcntl
+import struct
+import os,sys
+import ldap
+
+def printText(text,color):
+	col="2"
+	if color == "rojo":
+		col="1"
+
+	os.system("tput setaf "+col)
+	print (text)	
+	os.system("tput sgr0 default")
+
+def comprobarInterfaz(eth):
+	printText("Comprobando interfaz "+eth, "verde")
+	resultping=os.system ("ping -c 1 servidor")
+	return resultping
+
+def cambioInterfaz(ethX,ethZ):
+	global interfazActual
+	interfazActual = ethZ
+
+	printText("Cambio interfaz "+ethX+" por "+ethZ, "verde")
+	os.system ("sed 's/"+ethX+"/"+ethZ+"/g' /etc/network/interfaces > /tmp/interfaces_new")
+	os.system ("mv /tmp/interfaces_new /etc/network/interfaces")
+	os.system ("service networking restart")
+
+def getMAC(ifname):
+	s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+	info = fcntl.ioctl(s.fileno(), 0x8927,  struct.pack('256s', ifname[:15]))
+	return ''.join(['%02x:' % ord(char) for char in info[18:24]])[:-1]
+
+def finalizarScript(texto,reiniciar=False):
+	# Restauramos backup
+	os.system("cp /var/cache/interfaces.backup /etc/network/interfaces")
+
+	#restauramos el rc.local para que no se vuelva a invocar a este script
+	os.system("sed 's/\/root\/copiainicial//g' /etc/rc.local > /tmp/DefaultRC.LOCAL")
+	os.system("mv /tmp/DefaultRC.LOCAL /etc/rc.local")
+	os.system("chmod +x /etc/rc.local")		
+
+	if reiniciar:
+		printText(texto, "verde")
+		os.system("sleep 3")
+		os.system("init 6")
+	else:
+		printText(texto, "verde")
+
+# Consideraciones previas
+os.system ("chattr -i /etc/udev/rules.d/70-persistent-net.rules")
+os.system ("rm -rf /etc/udev/rules.d/70-persistent-net.rules")
+os.system ("cp /etc/network/interfaces /var/cache/interfaces.backup")
+os.system ("cp /etc/rc.local /var/cache/rc.local.backup")
+
+# Creamos un nuevo interfaces
+os.system ("echo 'auto lo eth3' > /etc/network/interfaces")
+os.system ("echo 'iface lo inet loopback' >> /etc/network/interfaces")
+os.system ("echo 'iface eth3 inet dhcp' >> /etc/network/interfaces")
+os.system ("echo '        ifup eth3' >> /etc/network/interfaces")
+os.system ("echo '        post-up /usr/sbin/ethtool -s $IFACE wol g' >> /etc/network/interfaces")
+os.system ("echo '        post-down /usr/sbin/ethtool -s $IFACE wol g' >> /etc/network/interfaces")
+
+# Comprobamos las interfaces de red
+interfazActual = "eth3"
+if comprobarInterfaz(interfazActual) != 0:
+	cambioInterfaz(interfazActual,"eth2")
+	if comprobarInterfaz(interfazActual) != 0:
+		cambioInterfaz(interfazActual,"eth1")
+		if comprobarInterfaz(interfazActual) != 0:
+			cambioInterfaz(interfazActual,"eth0")
+			if comprobarInterfaz(interfazActual) != 0:
+				finalizarScript("No se pudo establecer conexion con ningun interfaz.\nScript abortado")
+
+# Obtenemos la mac de la interfaz elegida
+mac = getMAC(interfazActual)
+
+# Establecemos conexion con LDAP
+try:
+	connect=ldap.open("ldap")
+	protocol_version = ldap.VERSION3
+except ldap.LDAPError, e:
+	finalizarScript("No se pudo establecer conexion con el ldap.\nScript abortado")
+
+# Buscamos el nombre del aula al que pertenece la mac
+try:
+	ldap_result_id = connect.search("ou=hosts,dc=instituto,dc=extremadura,dc=es", ldap.SCOPE_SUBTREE, "(macAddress="+mac+")", ["macAddress","cn"])
+	result_set = []
+	while 1:
+		result_type, result_data = connect.result(ldap_result_id, 0)
+		if (result_data == []):
+			break
+		else:
+			if result_type == ldap.RES_SEARCH_ENTRY:
+				result_set.append(result_data)
+except ldap.LDAPError, e:
+	finalizarScript(e)
+
+
+try:
+	aula = result_set[0][0][1]["cn"][0]
+	if aula != "":
+		os.system("wget http://servidor/backupltsp/"+aula+"/setup.ini -P /var/lib/aulalinex-profesor-ltsp -N")
+		os.system("wget http://servidor/backupltsp/"+aula+"/aulalinex-profesor.conf -P /var/lib/aulalinex-profesor -N")
+		os.system("wget http://servidor/backupltsp/"+aula+"/70-persistent-net.rules -P /etc/udev/rules.d -N")
+		os.system("chattr +i /etc/udev/rules.d/70-persistent-net.rules")
+
+		finalizarScript("Script finalizado correctamente.\nReiniciando...",True)
+	else:
+		finalizarScript("No se ha encontrado ningun aula asociada a la mac: "+mac+"\nScript abortado")
+except:
+	finalizarScript("Hubo un error al buscar el aula asociada a la mac: "+mac+"\nScript abortado")
+
+

Property changes on: scripts/ltsp-server/autoconfiguracion/copiainicial
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: scripts/ltsp-server/autoconfiguracion/LEEME
===================================================================
--- scripts/ltsp-server/autoconfiguracion/LEEME	(nonexistent)
+++ scripts/ltsp-server/autoconfiguracion/LEEME	(revision 430)
@@ -0,0 +1,51 @@
+##############################################################################
+# Project:     Autoconfiguracion
+# Purpose:     Autoconfiguracion de ltsp-servers
+# Language:    Python / Bash
+# Date:        13-Nov-2012.
+# Authores:    Manuel Mora Gordillo
+#			Francisco Damian Mendez Palma
+#
+# Copyright:   2012 - Manuel Mora Gordillo    <manuel.mora.gordillo @nospam@ gmail.com>
+# 			2012 - Francisco Damian Mendez Palma    <fmendezpalma @nospam@ gmail.com>
+#
+# Autoconfiguracion is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# Autoconfiguracion is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# You should have received a copy of the GNU General Public License
+# along with Autoconfiguracion. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+Que hace el script:
+
+- Cuando se inicia el equipo comprueba todas las interfaces de red hasta que consigue conectarse a la red troncal.
+- Una vez conectado, con su mac consulta a ldap para saber a que aula pertenece ese equipo
+- Sabiendo el aula al que pertenece, se descarga sus respectivos archivos (70-persistent-net.rules, aulalinex-profesor.conf y setup.ini)
+- Se reinicia con todo perfectamente configurado
+
+Pasos a seguir:
+
+- Tener relación de confianza SSH entre el servidor NFS y todos los servidores de aula
+- Hacer copia de los ficheros 70-persistent-net.rules, aulalinex-ltsp.conf y setup.ini con el script de Alfonso Pastor (he modificado el script para que además mueva el backup a servidor:/var/www/)
+- Tras la ejecución del script, en el NFS debe quedar algo así:
+      /var/www/backupltsp/a01-pro/70-persistent-net.rules
+      /var/www/backupltsp/a01-pro/aulalinex-ltsp.conf
+      /var/www/backupltsp/a01-pro/setup.ini
+      /var/www/backupltsp/a02-pro/70-persistent-net.rules
+      /var/www/backupltsp/a02-pro/aulalinex-ltsp.conf
+      /var/www/backupltsp/a02-pro/setup.ini
+      y así sucesivamente...
+- Instalar la nueva imagen ltsp-server en un servidor de aula
+- Copiar el script "copiainicial" a /root/copiainicial y hacerlo ejecutable "chmod +x /root/copiainicial"
+- Añadir al fichero /etc/rc.local la línea /root/copiainicial
+- Instalar en el servidor de aula el paquete python-ldap
+- Borrar el fichero /etc/udev/rules.d/70-persistent-net.rules
+- Hacer de nuevo la imagen del servidor (con clonezilla o backharddi) para instalarla al resto de equipos
+
+
Index: scripts/ltsp-server/autoconfiguracion/rc.local
===================================================================
--- scripts/ltsp-server/autoconfiguracion/rc.local	(nonexistent)
+++ scripts/ltsp-server/autoconfiguracion/rc.local	(revision 430)
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+#
+# rc.local
+#
+# This script is executed at the end of each multiuser runlevel.
+# Make sure that the script will "exit 0" on success or any other
+# value on error.
+#
+# In order to enable or disable this script just change the execution
+# bits.
+#
+# By default this script does nothing.
+
+/root/copiainicial
+
+exit 0

Property changes on: scripts/ltsp-server/autoconfiguracion/rc.local
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: scripts/ltsp-server/autoconfiguracion/autoconfiguracion.zip
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: scripts/ltsp-server/autoconfiguracion/autoconfiguracion.zip
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: scripts/ltsp-server/autoconfiguracion/backupltsp.sh
===================================================================
--- scripts/ltsp-server/autoconfiguracion/backupltsp.sh	(nonexistent)
+++ scripts/ltsp-server/autoconfiguracion/backupltsp.sh	(revision 430)
@@ -0,0 +1,35 @@
+#!/bin/bash
+#Ejecutar desde un ordenador donde se tenga relacion de confianza con todos los servidores de aula.
+#Version: 1.5
+#Fecha  : 11/10/2012
+#Autor  : Alfonso Pastor
+#         IES Virgen de Guadalupe (Cáceres)
+#
+# Modificado por Manuel Mora Gordillo - 9/11/2012
+
+servidoresaula=$(ldapsearch -xLLL -h ldap -b cn=ltsp-server-hosts,ou=Netgroup,dc=instituto,dc=extremadura,dc=es "nisNetgroupTriple" |grep -v "dn:"| cut -f2 -d "(" | cut -f1 -d",")
+
+listaficheros="/etc/udev/rules.d/70-persistent-net.rules /var/lib/aulalinex-profesor/aulalinex-profesor.conf /var/lib/aulalinex-profesor-ltsp/setup.ini /etc/hostapd/hostapd.accept /etc/hostapd/hostapd.conf"
+
+for servidoraula in $servidoresaula
+do
+   echo "Backup de $servidoraula:"
+   mkdir -p backupltsp/$servidoraula
+   for ruta in $listaficheros
+   do
+      fichero=$(basename $ruta)
+      if scp root@$servidoraula:$ruta backupltsp/$servidoraula/$fichero  > /dev/null 2>&1 
+      then
+          echo "  Copiado: $fichero"
+      else
+          echo "  No encontrado: $fichero"
+      fi
+   done
+
+done
+
+# Modificacion realizada por Manuel Mora Gordillo - 9/11/2012: Copio los ficheros a /var/www/
+cp -r ./backupltsp /var/www/
+chmod 755 /var/www/backupltsp -R
+
+echo "Finalizado: tiene todos los datos que se han podido copiar en ./backupltsp y /var/www/backupltsp"

Property changes on: scripts/ltsp-server/autoconfiguracion/backupltsp.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
