Revisión 435
Añadido por Francisco Rodrigo hace más de 12 años
tareas_puppet/servidores_aula/squeeze/ltsp_utilaula/files/apaga_clientes | ||
---|---|---|
#! /bin/sh
|
||
/sbin/ejecutaenhosts -p "poweroff -f"
|
||
tareas_puppet/servidores_aula/squeeze/ltsp_utilaula/files/id_rsa | ||
---|---|---|
-----BEGIN RSA PRIVATE KEY-----
|
||
MIIEogIBAAKCAQEAx22Iui6IIuIImE5VnN0pMCTIkF/5Nhmb0gaTvPPL8UpToynC
|
||
bwynNQze90RdGhN0lZs7slyVM8RnbFPik1m1MRFw/7ZClFavAUH6h3Q9B9FgxNGn
|
||
S6e62ek6v8j4aazri4TVLaogt7uT2mJa8D1qvVngPQErgEpgr7w4YcWpd3FXYe63
|
||
kzCb6g6ElEedfuAG7veDg26Hk6j3OAWfA+zInT/HkHe0B+jgAr6neVvhBdLnDTCd
|
||
Ra3MpgTrW1q/3/o82adJMBXQf2xAxkACMw7e0aaOPHJsA6wvSOL7PhY/FFOv2ad1
|
||
cmMHOXtcnwGwGk6f+29SgNw1Vnebsw63tLik0QIBIwKCAQEAvAgwdQdNKDQz/VEs
|
||
Ji+b3O97RkvcV5R8+TlmuXgmsE1kzQoduSkv8DC098QdRHi+YSv2dPg056qNZiM0
|
||
ttDsqptqirMo1QFF6z41WyR0Dq94fw7Q74+ESc1GBUh1MG/WxV/8Ml6T4G8Hv0bK
|
||
xUE4wSjavSz9ITAvRpuFngOCho3EITf+3cR0NwbJOLS8XuW0bkr5MEaSlPkCTnmd
|
||
p0mubgotQ1cDqrBcG2fIrVmLuUATWQVsnotLK+y8jaMOnnwT97PHW0V87Ge7frYs
|
||
NFeCt0lh/FATtYGK3/h12aJTPR5y8TBXkmWVxtrW91HvTPGnfq4v35Mzfy1B8xPx
|
||
0YC9FwKBgQD1TH69GcAi3E1FPrMoKCz+xPFkO55PEP9frBPaUTebkr7Kj4kN5uDR
|
||
ijEmOGYCAb0P1L54yhYQDRA8xIR37/AB11CgZgj7Wdf85Y88/PVHdOrYSOEmO+9X
|
||
sF7FCIv/heBVUrjAHklfnbEBtsm7bU5ESWHBBvFXfbrL72rVFSU/vwKBgQDQIMA5
|
||
vMbmhdFSpRLUVuYxhoBNSuo4MjyknY/P6gIuOLRBXGuSuZLTkcoZBTnOs/irbWxj
|
||
tGjZeeJTNutH8p3nxVIqrxC1gC4A5e+OkfrWa8r4sajy0O2hZSdcICupNlrRGoUi
|
||
JW/aNX1nZcnIU6L3oA8BnE6+gGYF8GAvuZ4/bwKBgH4nVx9sVC8veDI9gLWRATKR
|
||
K6/kJYe/mUclTAngoEFhaW99BKgQVl0if61Bk4wA5OOR+46T0NUOCFnEJt6Yp1Fn
|
||
a0stKTDPHp9RfN2JaDNgs0qpI1V96M4C7uj9FMyN/lfEJIAPk3MApCzEZ796Cv6M
|
||
I6UZg27S8lpAnVekeY5/AoGAF8k6ikF10TPdaIfk5RE+4Ravk84MI634TVPV6+A6
|
||
w3Qx25WIow3k5Pq4AtwGm0fEpeCerE8h7Pf8m8vDHipbMG5SiIkJOVB6ST7ZjKL4
|
||
GIFZBnq0OQHvRaUpEdfKeb0RsX9frCGJIECgnhpC8lKzigOp8Y404pJUzXqOpl5b
|
||
OnMCgYEA1bngJ88HGe/YlKTXH9THm140spVy/qeJmnbqTWB8RQobbp5Y7igLxnG2
|
||
Yvb7oSNeTCAhVqvnnwe5yan5tihTiredfr3lkPrw7B91Im8IfKlKnQwT72xkBDFB
|
||
bTSROCdpGrTYFvl6AriDU5Bzj5xHYm8GVpkeuI3xMgdmhxT+6+E=
|
||
-----END RSA PRIVATE KEY-----
|
tareas_puppet/servidores_aula/squeeze/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
|
||
ejecutaenhosts "poweroff -f"
|
||
/sbin/shutdown -r now
|
||
fi
|
||
|
||
tareas_puppet/servidores_aula/squeeze/ltsp_utilaula/files/chequea_login | ||
---|---|---|
#!/bin/sh
|
||
|
||
# Comprueba si hay algún profesor logueado en el servidor de aula y en caso contrario
|
||
# apaga los terminales que estuvieran encendidos
|
||
|
||
usuario=`finger -s | grep "tty" | head -1 | cut -d " " -f 1`
|
||
|
||
groups $usuario | grep -v "teachers" >/dev/null
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "No hay profes logueados `date`" >> /tmp/chequeo_login
|
||
/etc/init.d/apaga_clientes
|
||
else
|
||
echo "Sí hay profes logueados `date`" >> /tmp/chequeo_login
|
||
fi
|
||
exit 0
|
||
tareas_puppet/servidores_aula/squeeze/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 resultante
|
||
#se almacena en 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
|
||
|
||
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=$(avahi-browse -trpk -d local _workstation._tcp 2>/dev/null | grep 192.168.0. | grep -v '_pro\|\-pro' | cut -d";" -f7,8 | sed 's/.local//' | sort)
|
||
if [ -z "$listahosts" ]; then
|
||
echo "No se ha encontrado ninguna maquina conectada"
|
||
exit 2
|
||
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)
|
||
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 $* >> /tmp/salida_host_$host.log 2>&1
|
||
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
|
||
salida="/tmp/salidas_comando_$(date +%Y%m%d_%H%M).log"
|
||
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: \"$*\"" > $salida
|
||
echo $(date) >> $salida
|
||
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):" >> $salida
|
||
echo __________________________________________________________________________ >> $salida
|
||
cat /tmp/salida_host_${host}.log >> $salida
|
||
rm /tmp/salida_host_${host}.log
|
||
echo __________________________________________________________________________ >> $salida
|
||
done
|
||
echo "Salidas almacenadas en el fichero: $salida"
|
||
|
||
# read -n1 -p "¿Mostrar fichero? (s/N) "
|
||
# echo
|
||
# [[ $REPLY == [sSyY] ]] && less /root/$salida
|
||
#
|
||
# read -n1 -p "¿Borrar fichero? (s/N) "
|
||
# echo
|
||
# [[ $REPLY == [sSyY\n] ]] && rm $salida
|
||
|
||
fi
|
||
tareas_puppet/servidores_aula/squeeze/ltsp_utilaula/files/id_rsa.pub | ||
---|---|---|
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAx22Iui6IIuIImE5VnN0pMCTIkF/5Nhmb0gaTvPPL8UpToynCbwynNQze90RdGhN0lZs7slyVM8RnbFPik1m1MRFw/7ZClFavAUH6h3Q9B9FgxNGnS6e62ek6v8j4aazri4TVLaogt7uT2mJa8D1qvVngPQErgEpgr7w4YcWpd3FXYe63kzCb6g6ElEedfuAG7veDg26Hk6j3OAWfA+zInT/HkHe0B+jgAr6neVvhBdLnDTCdRa3MpgTrW1q/3/o82adJMBXQf2xAxkACMw7e0aaOPHJsA6wvSOL7PhY/FFOv2ad1cmMHOXtcnwGwGk6f+29SgNw1Vnebsw63tLik0Q== portatil@servidor
|
tareas_puppet/servidores_aula/squeeze/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
|
||
|
||
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=$(avahi-browse -trpk -d local _workstation._tcp 2>/dev/null | grep 192.168.0. | grep -v '\-pro\|_pro' | grep $1.* | cut -d";" -f7,8 | sed 's/.local//' | sort | tail -1 )
|
||
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/squeeze/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
|
||
ejecutaenhosts "poweroff -f"
|
||
/sbin/shutdown -h now
|
||
fi
|
||
|
||
tareas_puppet/servidores_aula/squeeze/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/squeeze/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 ()
|
||
|
||
listahosts=$(avahi-browse -trpk -d local _workstation._tcp 2>/dev/null | grep 192.168.0. | grep -v '_pro\|\-pro' | cut -d";" -f7,8 | sed 's/.local//' | 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)
|
||
ip=$(echo $hostip | cut -d";" -f2)
|
||
echo "--$host($ip)"
|
||
done
|
||
|
||
tareas_puppet/servidores_aula/squeeze/ltsp_utilaula/leeme.txt | ||
---|---|---|
30/03/2011
|
||
Añadida funcionalidad apaga_clientes basada en 'ejecutaenhosts' para forzar
|
||
el apagado de los clientes cuando se apaga o reinicia el servidor del aula.
|
||
|
||
utilaula 0.5
|
||
|
||
Tarea de puppet que añade comandos que hace posible conectarse facilmente
|
||
a los ordenadores(portatiles o clientes ligeros) que estan encendidos en un
|
||
determinado momento en un aula desde el ordenador del profesor. Para instalar
|
||
la tarea solo hay que descomprimir en /etc/puppet/modules del servidor nfs y
|
||
añadirla a clase-especifica. 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 logeado
|
||
|
||
Ricardo Salgado Cid
|
||
IESO Galisteo
|
||
Febrero 2011
|
||
|
||
|
tareas_puppet/servidores_aula/squeeze/ltsp_utilaula/changelog | ||
---|---|---|
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/squeeze/ltsp_utilaula/manifests/init.pp | ||
---|---|---|
class ltsp_utilaula {
|
||
|
||
|
||
package { "finger":
|
||
ensure => latest,
|
||
}
|
||
|
||
user { "portatil":
|
||
uid => '900',
|
||
ensure => present,
|
||
home => '/var/lib/portatil',
|
||
managehome => true,
|
||
shell => '/bin/bash',
|
||
}
|
||
|
||
file {
|
||
|
||
"/etc/init.d/apaga_clientes":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/apaga_clientes",
|
||
require => Package["finger"],
|
||
notify => Exec[crear_enlaces_ejecucion];
|
||
|
||
"/usr/bin/chequea_login":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/chequea_login";
|
||
|
||
"/sbin/conectahost":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/conectahost";
|
||
|
||
"/sbin/listahosts":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/listahosts";
|
||
|
||
"/sbin/ejecutaenhosts":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/ejecutaenhosts";
|
||
|
||
"/sbin/arreglosportatil":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/arreglosportatil";
|
||
|
||
"/sbin/apagado":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/apagado";
|
||
|
||
"/sbin/reinicio":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///ltsp_utilaula/reinicio";
|
||
|
||
"/var/lib/portatil/.ssh":
|
||
owner => root, group => root, mode => 700,
|
||
require => User["portatil"],
|
||
ensure => directory;
|
||
|
||
"/var/lib/portatil/.ssh/id_rsa":
|
||
owner => root, group => root, mode => 600,
|
||
source => "puppet:///ltsp_utilaula/id_rsa",
|
||
require => File["/var/lib/portatil/.ssh"];
|
||
|
||
"/var/lib/portatil/.ssh/id_rsa.pub":
|
||
owner => root, group => root, mode => 600,
|
||
source => "puppet:///ltsp_utilaula/id_rsa.pub",
|
||
require => File["/var/lib/portatil/.ssh"],
|
||
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",
|
||
notify => Exec["crear-imagen-utilaula"];
|
||
}
|
||
|
||
exec { "crear-imagen-utilaula":
|
||
command => "/usr/sbin/ltsp-update-image --arch i386",
|
||
refreshonly => true;
|
||
}
|
||
|
||
exec { "crear_enlaces_ejecucion":
|
||
command => "/usr/sbin/update-rc.d apaga_clientes stop 01 0 6 .",
|
||
refreshonly => true;
|
||
}
|
||
|
||
cron {
|
||
"chequea-login":
|
||
command => "/usr/bin/chequea_login",
|
||
user => root,
|
||
hour => '8-20',
|
||
minute => '*/2',
|
||
weekday => '1-5',
|
||
}
|
||
}
|
Exportar a: Unified diff
Actualizada la tarea utilaula para que funcione con squeeze.