Index: tareas_puppet/servidores_aula/apagado-terminales/files/apagaterminales.sh
===================================================================
--- tareas_puppet/servidores_aula/apagado-terminales/files/apagaterminales.sh	(revision 154)
+++ tareas_puppet/servidores_aula/apagado-terminales/files/apagaterminales.sh	(revision 155)
@@ -4,14 +4,14 @@
 # 03/02/2011
 
 # apagaterminales.sh -> Apaga los terminales de un aula
-# El script hace uso de nmap, dsh y ssh-keyscan para cumplir con su función.
-# Está pensado para ejecutar el comando de apagado tan sólo sobre las máquinas que nmap detecte encendidas
+# El script hace uso de avahi-browse y ssh-keyscan para cumplir con su función.
+# Está pensado para ejecutar el comando de apagado tan sólo sobre las máquinas que se detecten encendidas
 # pero al mismo tiempo, va construyendo una lista con las ips de las máquinas que se van detectando.
 # Hace uso de ssh-keyscan para obtener las claves rsa de los terminales encendidos y añadirlas al fichero 
 # /root/.ssh/known_hosts del servidor de terminales.
 
-# Detectamos los terminales encendidos en el rango 200-254, tal y como está definido en ldap
-nmap -sP 192.168.0.200-253|grep -oiE '([0-9]{1,3}\.){3}[0-9]+' > /tmp/terminalesUp 
+# Detectamos los terminales encendidos
+avahi-browse -trpk -d local _workstation._tcp 2>/dev/null | grep 192.168.0. | grep -v '_pro\|\-pro'| cut -d";" -f8 | sed 's/.local//' > /tmp/terminalesUp
 
 # Añadimos las ips de las nuevas máquinas detectadas a /etc/dsh/machines.list.all para guardar una lista de todos los terminales
 sort -o /etc/dsh/machines.list.all -u -m /tmp/terminalesUp /etc/dsh/machines.list
@@ -26,4 +26,4 @@
 sort -o /root/.ssh/known_hosts -u -m /tmp/rsaterminalesUp /root/.ssh/known_hosts
 
 # Apagamos los terminales y cargamos en /etc/dsh/machines.list la lista completa de terminales detectados en algún momento
-dsh -a /sbin/poweroff -p 2>null; cat /etc/dsh/machines.list.all > /etc/dsh/machines.list
+dsh -a /sbin/poweroff -hp 2>null; cat /etc/dsh/machines.list.all > /etc/dsh/machines.list
Index: tareas_puppet/servidores_aula/apagado-terminales/leeme.txt
===================================================================
--- tareas_puppet/servidores_aula/apagado-terminales/leeme.txt	(revision 154)
+++ tareas_puppet/servidores_aula/apagado-terminales/leeme.txt	(revision 155)
@@ -3,25 +3,31 @@
 
 Destino: Servidores de aula.
 
-Acción: * Copia el script apagaterminales.sh con permisos 750 a /usr/sbin
-	    * Instala los paquetes nmap y dsh, necesarios para que el script funcione.
-	    * Añade la clave pública de root en el servidor de terminales (/root/.ssh/id_rsa.pub)
-	      al fichero authorized_keys de la imagen de los terminales y regenera la imagen.
-	    * Añade la llamada al script apagaterminales.sh al fichero /etc/gdm/PostSession/Default
-	      para que los terminales de alumno se apagen cuando el profesor cierre la sesión.
+Acción:   * Copia el script apagaterminales.sh con permisos 750 a /usr/sbin
+   	  * Instala el paquete dsh, necesario para que el script funcione.
+   	  * Crea las claves pública y privada de root en cada servidor de terminales, 
+            si no han sido creadas aún, dejando vacía la "passphrase".
+	  * Añade la clave pública de root del servidor de terminales (/root/.ssh/id_rsa.pub)
+	    al fichero authorized_keys de la imagen de los terminales y regenera la imagen.
+	  * Añade la llamada al script apagaterminales.sh al fichero /etc/gdm/PostSession/Default
+	    para que los terminales de alumno se apagen cuando el profesor cierre la sesión.
+	  * Añade un script de inicio llamado "halt-terminales" a /etc/init.d y crea dos enlaces en:
+            /etc/rc0.d/K01aapaga-terminales y /etc/rc6.d/K01aapaga-terminales para apagar los terminales
+            cuando se apague o reinicie el servidor.
 
 Función:  * apagaterminales.sh -> Apaga los terminales de un aula
-		  * El script hace uso de nmap, dsh y ssh-keyscan para cumplir con su función.
-		  * Está pensado para ejecutar el comando de apagado tan sólo sobre las máquinas que nmap detecte encendidas
-		  * pero al mismo tiempo, va construyendo una lista con las ips de los terminales que se van detectando en cada uso.
-		  * Hace uso de ssh-keyscan para obtener las claves rsa de los terminales encendidos y añadirlas al fichero 
-			/root/.ssh/known_hosts del servidor de terminales. 
+	  * El script hace uso de dsh y ssh-keyscan para cumplir con su función.
+	  * Está pensado para ejecutar el comando de apagado tan sólo sobre las máquinas que se detecten encendidas
+	  * pero al mismo tiempo, va construyendo una lista con las ips de los terminales que se van detectando en cada uso.
+	  * Hace uso de ssh-keyscan para obtener las claves rsa de los terminales encendidos y añadirlas al fichero 
+	    /root/.ssh/known_hosts del servidor de terminales. 
 
-Notas: El script apagaterminales.sh podría llamarse también desde cualquier otro lugar, además
-	   del anterior, por ejemplo, con una tarea en el cron.	
+Notas:    El script apagaterminales.sh se ejecuta:
+          * Cuando el profesor cierra la sesión.
+          * Cuando se reinicia el servidor de terminales.
+          * Cuando se apaga el servidor de terminales.
 
-
-IMPORTANTE: Incluir los paquetes nmap y dsh en el fichero mayhave del ltspserver:
+IMPORTANTE: Incluir el paquete dsh en el fichero mayhave del ltspserver:
             /etc/puppet/files/mayhave.ltspserver
             
 
@@ -28,16 +34,10 @@
 INSTRUCCIONES DE INSTALACION DEL MODULO
 ---------------------------------------
 
-1) Antes de poner la tarea, crear las claves pública y privada de root en cada servidor de terminales, 
-dejando vacía la "passphrase":
+1) Desempaquetar en /etc/puppet/modules
 
-    # ssh-keygen -t rsa -f /root/.ssh/id_rsa
+2) Incluir la linea include "nombre_modulo" en /etc/puppet/manifests/classes/clase-especifica.pp
 
-
-2) Desempaquetar en /etc/puppet/modules
-
-3) Incluir la linea include "nombre_modulo" en /etc/puppet/manifests/classes/clase-especifica.pp
-
 ------------------------------------------------
 
 
@@ -46,3 +46,6 @@
 Esteban M. Navas Martín
 Administrador informático del IES Valle del Jerte.
 03-Febrero-2011
+
+Última modificación:
+29-Abril-2011
Index: tareas_puppet/servidores_aula/apagado-terminales/manifests/init.pp
===================================================================
--- tareas_puppet/servidores_aula/apagado-terminales/manifests/init.pp	(revision 154)
+++ tareas_puppet/servidores_aula/apagado-terminales/manifests/init.pp	(revision 155)
@@ -1,7 +1,4 @@
 class apagado-terminales {
-   package { nmap:
-      ensure=>"installed"
-   }
 
    package { dsh:
       ensure=>"installed"
@@ -15,10 +12,16 @@
 
    file {
       "/opt/ltsp/i386/root/.ssh" :
-      ensure => directory, owner => root,  group => root, mode => 755,
+      ensure => directory, owner => root,  group => root, mode => 700,
    }
 
-   exec { "/bin/cat /root/.ssh/id_rsa.pub >> /opt/ltsp/i386/root/.ssh/authorized_keys":
+   exec { "/usr/bin/ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa":
+        unless => "/usr/bin/test -f /root/.ssh/id_rsa",
+        notify => Exec["copy-publickey"]
+   }
+
+   exec { "copy-publickey":
+        command => "/bin/cat /root/.ssh/id_rsa.pub >> /opt/ltsp/i386/root/.ssh/authorized_keys",
         require => File["/root/.ssh/id_rsa.pub"],
         require => File["/opt/ltsp/i386/root/.ssh"],
         unless => '/bin/grep "$fqdn" /opt/ltsp/i386/root/.ssh/authorized_keys 2>/dev/null',
@@ -35,4 +38,18 @@
         unless => '/bin/grep "apagaterminales" /etc/gdm/PostSession/Default 2>/dev/null'
    }
 
+   file {
+      "/etc/init.d/halt-terminales" :
+      source => "puppet://puppetinstituto/apagado-terminales/halt-terminales",
+      owner => root, group => root, mode => 750
+   }
+
+   exec { "/bin/ln -sf /etc/init.d/halt-terminales /etc/rc0.d/K01aapaga-terminales":
+      unless => "/usr/bin/test -L /etc/rc0.d/K01aapaga-terminales"
+   }
+
+   exec { "/bin/ln -sf /etc/init.d/halt-terminales /etc/rc6.d/K01aapaga-terminales":
+      unless => "/usr/bin/test -L /etc/rc6.d/K01aapaga-terminales"
+   }
+
 }
Index: tareas_puppet/servidores_aula/apagado-terminales.tgz
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
