Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 534

Añadido ltsp_utilaula actualizado para wheezy

Ver diferencias:

tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/compruebaprofe
#!/bin/bash
#
#Ricardo Salgado(IESO Galisteo)
#
#Comprueba si hay un profesor logeado en caso de no haberlo apgaga los
#los ordenadores que esten encendidos.
if ! who | grep -q "(:0)" ; then
/sbin/ejecutaenhosts "poweroff" > /dev/null
fi
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/halt-terminales
#! /bin/sh
### BEGIN INIT INFO
# Provides: halt-terminales
# Required-Start:
# Required-Stop: $all
# Default-Start:
# Default-Stop: 0 1 6
# Short-Description: Execute the reboot command.
# Description:
### END INIT INFO
set -e
PATH=/sbin:/usr/sbin:/bin:/usr/bin
. /lib/lsb/init-functions
do_stop () {
# Apagamos los terminales
/sbin/ejecutaenhosts -p "poweroff -fp"
}
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/wheezy/ltsp_utilaula/files/conectahost
#!/bin/bash
#
#Ricardo Salgado(IESO Galisteo)
#
#Conecta a un host (portatil o workstation) que esté conectado a la red del aula en ese momento
#toma como parametro el nombre del host(o una parte de el)
#
#Ricardo Salgado Cid
#IESO Galisteo
#
#26/01/11 Release incial ()
#09/02/11 Opciones mas restrictivas en los ssh para evitar esperas infinitas
#12/04/13 Actualizado para que use nmap en vez de avahi
#20/04/13 Comprueba la existencia del host antes de intentar conectar
if [ $# -ne 1 ]; then
echo "Conecta a un host (portatil o workstation) que este conectado a la red del aula en ese momento"
echo "Uso: $0 nombre_equipo"
exit
fi
hostip=$(nmap -oG - --system-dns -sP 192.168.0.200-253 | grep -v '^#' | grep $1.* | tr -d '()' | sed 's/.local//' | awk '{print $3 ";" $2}' | sort | tail -1)
if [ -z "$hostip" ] ; then
echo "No se encuentra ninguna máquina con ese nombre"
exit 1
fi
host=$(echo $hostip | cut -d";" -f1)
ip=$(echo $hostip | cut -d";" -f2)
echo "Conectando a $host($ip)"
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=9 -o ServerAliveCountMax=2 -o ServerAliveInterval=15 -i /var/lib/portatil/.ssh/id_rsa root@$ip
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/croncompruebaprofe
#*/3 * * * * root /sbin/compruebaprofe
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/apagado
#!/bin/bash
#Apaga el servidor de aula si no hay nadie logeado. Tambien apaga
#los ordenadores de los host conectados(Evita que se queden fritos
#algunos tipos de clientes ligeros como los Dominion)
#No tiene en cuenta si hay logeados alumnos
if ! who | grep -q "(:0)"; then
/sbin/ejecutaenhosts poweroff
/sbin/shutdown -h now
fi
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/arreglosportatil
#!/bin/bash
#
# Ricardo Salgado(IESO Galisteo)
#
# Ejecuta los comandos contenidos en la variable "comandos" en todos los portatiles conectados al aula.
# Los comandos deben terminar con el caracter ";" a excepcion del ultimo
# Pensado solo para los portatiles, cuidado con ejecutarlo sobre los clientes ligeros
# Pasando como parametro -p al script los comandos se ejecutaran en paralelo en todos los host.
# Sin parametros se ejecutaran host a host
comandos="
/etc/init.d/puppet stop;
dpkg --configure -a --force-all;
puppetd -tv;
pkgsync;
nss_updatedb ldap;
apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold--reinstall install autofs5;
/etc/init.d/puppet start
"
if [ "$1" \= "-p" ] ; then
/sbin/ejecutaenhosts -p $comandos
else
/sbin/ejecutaenhosts $comandos
fi
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/listahosts
#!/bin/bash
#Lista los hosts, sean portatiles o clientes ligeros que esten conectados en esa clase
#en ese instante.
#
#Ricardo Salgado Cid
#IESO Galisteo
#
#09/02/11 Release incial ()
#12/04/13 Actualizado para que use nmap en vez de avahi
listahosts=$(nmap -oG - --system-dns -sP 192.168.0.200-253 | grep -v '^#' | tr -d '()' | sed 's/.local//' | awk '{print $3 ";" $2}' | sort)
if [ -z "$listahosts" ]; then
echo "No se ha encontrado ninguna maquina conectada"
exit 2
else
echo "Hay $(echo $listahosts | tr " " "\n" | wc -l ) maquina/s conectadas:"
fi
for hostip in $listahosts
do
host=$(echo $hostip | cut -d";" -f1)
if [ "$host" \= "Status:" ] ; then
host="Host desconocido"
fi
ip=$(echo $hostip | cut -d";" -f2)
echo "--$host($ip)"
done
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/reinicio
#!/bin/bash
#Reinicia el servidor de aula si no hay nadie logeado. Tambien apaga
#los ordenadores de los host conectados(Evita que se queden fritos
#algunos tipos de clientes ligeros como los Dominion)
#No tiene en cuenta si hay logeados alumnos
if ! who | grep -q "(:0)"; then
/sbin/ejecutaenhosts poweroff
/sbin/shutdown -r now
fi
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/files/ejecutaenhosts
#!/bin/bash
#Permite ejecutar el comando que se le pase como parámetro en todos los hosts, ya
#sean portatiles o clientes ligeros que esten conectados en esa clase en ese instante.
#Con el parametro -p se ejecuta en paralelo en todos los equipos, la salida puede
#redirigirse a un fichero.
#Sin el parametro -p el comando se va ejecutando maquina a maquina
#
#Ricardo Salgado Cid
#IESO Galisteo
#
#26/01/11 Release incial ()
#09/02/11 Opciones mas restrictivas en los ssh para evitar esperas infinitas
#12/04/13 Actualizado para que use nmap en vez de avahi
if [ $# -lt 1 ]; then
echo "Permite ejecutar el comando que se le pase como parametro en todos los hosts"
echo "sean portatiles o clientes ligeros que esten conectados en esa clase en ese instante."
echo "Con el parametro -p se ejecuta en paralelo en todos los equipos"
echo "Uso: $0 [-p] comando"
exit
fi
if [ "$1" \= "-p" ] ; then
enparalelo="yes"
shift
fi
listahosts=$(nmap -oG - --system-dns -sP 192.168.0.200-253 | grep -v '^#' | tr -d '()' | sed 's/.local//' | awk '{print $3 ";" $2}' | sort)
if [ -z "$listahosts" ]; then
echo "No se ha encontrado ninguna maquina conectada"
exit 0
else
echo "El comando se ejecutará sobre $(echo $listahosts | tr " " "\n" | wc -l ) maquina/s"
fi
for hostip in $listahosts
do
if [ -z $enparalelo ]; then
salida=/dev/stdout
else
salida=/dev/null
fi
host=$(echo $hostip | cut -d";" -f1)
if [ "$host" \= "Status:" ] ; then
host="Host desconocido"
fi
ip=$(echo $hostip | cut -d";" -f2)
echo "Salida del comando en el host $host($ip):" > $salida
echo __________________________________________________________________________ > $salida
if [ -z $enparalelo ]; then
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=9 -o ServerAliveCountMax=2 -o ServerAliveInterval=15 -i /var/lib/portatil/.ssh/id_rsa root@$ip $*
else
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=9 -o ServerAliveCountMax=2 -o ServerAliveInterval=15 -i /var/lib/portatil/.ssh/id_rsa root@$ip $* > /tmp/salida_host_$host.log 2>&1 &
fi
echo __________________________________________________________________________ > $salida
echo -e "\n\n" > $salida
done
if [ -z "$enparalelo" ]; then
exit 0
else
echo -n "Esperando a que terminen los procesos "
for job in $(jobs -p)
do
echo -n "."
wait $job
done
echo -e "\n"
echo "Hecho!"
echo "Salidas del comando: \"$*\""
echo $(date)
for hostip in $listahosts
do
host=$(echo $hostip | cut -d";" -f1)
ip=$(echo $hostip | cut -d";" -f2)
echo "Salida del comando en el host $host($ip):"
echo __________________________________________________________________________
cat /tmp/salida_host_${host}.log
rm /tmp/salida_host_${host}.log
echo __________________________________________________________________________
echo -e "\n\n"
done
fi
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/leeme.txt
utilaula 1.0
Tarea de puppet que añade comandos que hacen posible conectarse fácilmente desde
un servidor de aula a los ordenadores(portatiles o clientes ligeros) que están
encendidos en un determinado momento.
Para instalar la tarea solo hay que descomprimir en /etc/puppet/modules del servidor
nfs y añadirla a clase-especifica-wheezy.
Desde Abril de 2013 hace uso de nmap para localizar los equipos encendidos en vez
de avahi. Por defecto, el acceso al ejecutable de nmap queda restringido exclusivamente
al usuario root.
Los comandos son los siguientes:
*listahosts: devuelve una lista de las máquinas conectadas(hostname e ip).
*conectahost: abre una sesión de ssh como root en la maquina que se le indique.
(No es necesario teclear el nombre entero,basta con los primeros caracteres)
*ejecutaenhosts: ejecuta el comando que se le pase como parámetro en todos los hosts
(Con el parametro -p se ejecuta en paralelo en todos los equipos)
*arreglosportatil: ejecuta los comandos de configuracion basica de los portatiles.
(mirar dentro del script para mas detalles)
*reincio: reincia el servidor de aula si no hay nadie logeado.
*apagado: apaga el servidor de aula si no hay nadie logeadoo.
*compruebaprofe: comprueba si hay profesor logeado, si no lo hay apaga los equipos que
esten conectados. Para hacer comprobaciones periodicas se incluye el archivo
croncrompruebaprofe que se copia en /etc/cron.d/ . Por defecto esta comentado para
no interferir con las personalizaciones que tenga cada uno.
Añadida funcionalidad apaga_clientes basada en 'ejecutaenhosts' para forzar el apagado
de los clientes cuando se apaga o reinicia el servidor del aula. (Francisco Rodrigo)
Ricardo Salgado Cid
IESO Galisteo
Francisco Rodrigo López
IES Javier García Téllez
Abril 2013
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/changelog
18/02/15 v1.0 Adaptado a wheezy
22/04/13 v0.9 Añadido apaga_clientes,para forzar el apagado de los clientes cuando se apaga o reinicia el servidor del aula. (Francisco Rodrigo)
12/04/13 v0.8 Actulizado para empezar a usar nmap en vez de avahi
Actulizado para squeeze
22/09/11 v0.7.1 Añadido compruebaprofe
16/02/11 v0.7 Corregidos permisos en la carpeta files
10/02/11 v0·6 Corregido bug(No se creaba la carpeta .ssh dentro del root de la imagen ltsp)
10/02/11 v0.5 Release incial
tareas_puppet/servidores_aula/wheezy/ltsp_utilaula/manifests/init.pp
class ltsp_utilaula {
package { "nmap":
ensure => installed,
}
user { "portatil":
uid => '900',
ensure => present,
home => '/var/lib/portatil',
managehome => true,
shell => '/bin/bash',
}
file {
"/var/lib/portatil/.ssh":
ensure => directory,
owner => portatil, group => portatil, mode => 700,
require => User["portatil"] ;
"/var/lib/portatil/.ssh/id_rsa":
owner => portatil, group => portatil, mode => 600,
require => File["/var/lib/portatil/.ssh"],
source => "puppet://puppetinstituto/files/portatil-prof/id_rsa";
"/var/lib/portatil/.ssh/id_rsa.pub":
owner => portatil, group => portatil, mode => 644,
require => File["/var/lib/portatil/.ssh"],
source => "puppet://puppetinstituto/files/portatil-prof/id_rsa.pub";
"/sbin/conectahost":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/conectahost";
"/sbin/listahosts":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/listahosts";
"/sbin/ejecutaenhosts":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/ejecutaenhosts";
"/sbin/arreglosportatil":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/arreglosportatil";
"/sbin/apagado":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/apagado";
"/sbin/reinicio":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/reinicio";
"/sbin/compruebaprofe":
owner => root, group => root, mode => 750,
source => "puppet:///modules/ltsp_utilaula/compruebaprofe";
"/opt/ltsp/i386/root/.ssh":
owner => root, group => root, mode => 755,
ensure => directory,
before => File["/opt/ltsp/i386/root/.ssh/authorized_keys2"];
"/opt/ltsp/i386/root/.ssh/authorized_keys2":
owner => root, group => root, mode => 600,
source => "/var/lib/portatil/.ssh/id_rsa.pub",
require => File["/var/lib/portatil/.ssh/id_rsa.pub"],
notify => Exec[crear-imagen-ltsp_utilaula];
#Limitamos el acceso a nmap
"/usr/bin/nmap":
owner => root, group => root, mode => 750;
#Solo si se quieren apagar los terminales/portatiles si no hay profesor
"/etc/cron.d/croncompruebaprofe":
owner => root, group => root, mode => 644,
source => "puppet:///modules/ltsp_utilaula/croncompruebaprofe";
}
#Haciendo uso de la tarea nueva para regenerar el chroot
exec { "crear-imagen-ltsp_utilaula":
command => "/bin/rm -f /etc/ltsp/thinclient-image-up-to-date",
refreshonly => true;
}
############################################################
# apaga-terminales en apagados y reinicios
############################################################
file {
"/etc/init.d/halt-terminales":
owner => root, group => root, mode => 755,
source => "puppet:///modules/ltsp_utilaula/halt-terminales",
notify => Exec[crear-enlaces-ejecucion];
}
exec { "crear-enlaces-ejecucion":
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
command => "update-rc.d halt-terminales defaults",
require => File["/etc/init.d/halt-terminales"],
unless => "ls /etc/rc0.d/K??halt-terminales";
}
}

Exportar a: Unified diff