Revisión 454
Añadido por Esteban M. Navas Martín hace más de 12 años
tareas_puppet/servidores_aula/squeeze/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 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, tal y como está definido en ldap
|
||
avahi-browse -trpk -d local _workstation._tcp 2>/dev/null | grep 192.168.0. | grep -v '_pro\|\-pro'| cut -d";" -f8 > /tmp/terminalesUp
|
||
|
||
# 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 -m /tmp/rsaterminalesUp /root/.ssh/known_hosts
|
||
sort -o /root/.ssh/known_hosts -u /root/.ssh/known_hosts
|
||
|
||
# Apagamos los terminales
|
||
while read IP
|
||
do
|
||
ssh root@$IP -a /sbin/poweroff -fp &
|
||
done < /tmp/terminalesUp
|
||
tareas_puppet/servidores_aula/squeeze/apagado-terminales/files/halt-terminales | ||
---|---|---|
#! /bin/sh
|
||
### BEGIN INIT INFO
|
||
# Provides: halt-terminales
|
||
# Required-Start:
|
||
# Required-Stop:
|
||
# Default-Start:
|
||
# Default-Stop: 0 6
|
||
# Short-Description: Execute the reboot command.
|
||
# Description:
|
||
### END INIT INFO
|
||
|
||
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||
|
||
. /lib/lsb/init-functions
|
||
|
||
do_stop () {
|
||
# Apagamos los terminales
|
||
/usr/sbin/apagaterminales.sh &
|
||
}
|
||
|
||
case "$1" in
|
||
start)
|
||
# No-op
|
||
;;
|
||
restart|reload|force-reload)
|
||
echo "Error: argument '$1' not supported" >&2
|
||
exit 3
|
||
;;
|
||
stop)
|
||
do_stop
|
||
;;
|
||
*)
|
||
echo "Usage: $0 start|stop" >&2
|
||
exit 3
|
||
;;
|
||
esac
|
||
tareas_puppet/servidores_aula/squeeze/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 el paquete dsh, necesarios 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 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.
|
||
* 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 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 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 el paquete dsh en el fichero mayhave del ltspserver:
|
||
/etc/puppet/files/mayhave.ltspserver
|
||
|
||
|
||
INSTRUCCIONES DE INSTALACION DEL MODULO
|
||
---------------------------------------
|
||
|
||
1) Desempaquetar en /etc/puppet/modules
|
||
|
||
2) 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
|
tareas_puppet/servidores_aula/squeeze/apagado-terminales/manifests/init.pp | ||
---|---|---|
class apagado-terminales {
|
||
|
||
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 => 700,
|
||
}
|
||
|
||
file { "/root/.ssh/id_rsa.pub":
|
||
ensure => file, owner => "root", group => "root", mode => "644",
|
||
}
|
||
|
||
file {
|
||
"/root/.ssh/known_hosts" :
|
||
ensure => file, owner => root, group => root, mode => 644,
|
||
}
|
||
|
||
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"], 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/gdm3/PostSession/Default':
|
||
unless => '/bin/grep "apagaterminales" /etc/gdm3/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"
|
||
}
|
||
|
||
}
|
Exportar a: Unified diff
Tarea apagado-terminales modificada para squeeeze