Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 142

Tarea para apagar automáticamente los terminales cuando el profesor cierre sesión

Ver diferencias:

tareas_puppet/servidores_aula/apagado-terminales/manifests/init.pp
class apagado-terminales {
package { nmap:
ensure=>"installed"
}
package { dsh:
ensure=>"installed"
}
file {
"/usr/sbin/apagaterminales.sh" :
source => "puppet://puppetinstituto/apagado-terminales/apagaterminales.sh",
owner => root, group => root, mode => 750
}
file {
"/opt/ltsp/i386/root/.ssh" :
ensure => directory, owner => root, group => root, mode => 755,
}
exec { "/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',
notify => Exec["update-image"]
}
exec { "update-image":
command => "/usr/sbin/ltsp-update-image --arch i386",
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
refreshonly => true
}
exec { '/bin/sed -i -e "s/exit 0/\/usr\/sbin\/apagaterminales.sh \&\n\nexit 0/g" /etc/gdm/PostSession/Default':
unless => '/bin/grep "apagaterminales" /etc/gdm/PostSession/Default 2>/dev/null'
}
}
tareas_puppet/servidores_aula/apagado-terminales/files/apagaterminales.sh
#!/bin/bash
# Esteban M. Navas
# IES Valle del Jerte - Plasencia
# 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
# 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
# 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
# Creamos la lista de máquinas encendidas para no ejecutar el comando sobre máquinas apagadas
cat /tmp/terminalesUp > /etc/dsh/machines.list
# Obtenemos las claves rsa de los terminales encendidos
ssh-keyscan -t rsa -f /tmp/terminalesUp > /tmp/rsaterminalesUp
# Añadimos las claves rsa de los terminales encendidos al fichero known_host de root del servidor de terminales
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
tareas_puppet/servidores_aula/apagado-terminales/leeme.txt
BREVE DESCRIPCION DE LA EJECUCION DEL MODULO
--------------------------------------------
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.
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.
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.
IMPORTANTE: Incluir los paquetes nmap y dsh en el fichero mayhave del ltspserver:
/etc/puppet/files/mayhave.ltspserver
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":
# ssh-keygen -t rsa -f /root/.ssh/id_rsa
2) Desempaquetar en /etc/puppet/modules
3) Incluir la linea include "nombre_modulo" en /etc/puppet/manifests/classes/clase-especifica.pp
------------------------------------------------
Creado por:
Esteban M. Navas Martín
Administrador informático del IES Valle del Jerte.
03-Febrero-2011

Exportar a: Unified diff