Revisión 534
Añadido por Ricardo Salgado Cid hace alrededor de 10 años
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
Añadido ltsp_utilaula actualizado para wheezy