Revisión 409
Añadido por Francisco Rodrigo hace más de 12 años
tareas_puppet/servidores_aula/quita_rayas_intel/files/lts.conf | ||
---|---|---|
# This is the default lts.conf file for ltsp 5.
|
||
# For more information about valid options please see:
|
||
# /usr/share/doc/ltsp-client/examples/lts-parameters.txt.gz
|
||
# in the client environment
|
||
|
||
[default]
|
||
LOCAL_APPS=True
|
||
LOCAL_APPS_MENU=True
|
||
LOCAL_APPS_MENU_ITEMS=firefox
|
||
#SOUND=False
|
||
#LOCALDEV=False
|
||
CONFIGURE_X=True
|
||
#CONFIGURE_X=False
|
||
#XRAMPREC=80
|
||
#LDM_AUTOLOGIN=True
|
||
|
||
X_MODE_0 = 1024x768
|
||
X_COLOR_DEPTH = 16
|
||
X_HORZSYNC = 30-54
|
||
X_VERTREFRESH = 50-120
|
||
X_MOUSE_DEVICE = "/dev/psaux"
|
||
X_MOUSE_PROTOCOL = "ExplorerPS/2"
|
||
X_MOUSE_RESOLUTION = 400
|
||
X_MOUSE_BUTTONS = 3
|
||
XkbModel = pc105
|
||
XkbLayout = es
|
||
|
||
X_VIDEORAM = 8192
|
||
|
||
X_OPTION_01 = "\"AccelMethod\" \"xaa\""
|
||
X_OPTION_02 = "\"XAANoOffscreenPixmaps\" \"True\""
|
||
X_OPTION_03 = "\"DRI\" \"off\""
|
tareas_puppet/servidores_aula/quita_rayas_intel/files/blacklist | ||
---|---|---|
# This file lists modules which will not be loaded as the result of
|
||
# alias expansion, with the purpose of preventing the hotplug subsystem
|
||
# to load them. It does not affect autoloading of modules by the kernel.
|
||
# This file is provided by the udev package.
|
||
|
||
blacklist i915
|
||
|
||
# evbug is a debug tool and should be loaded explicitly
|
||
blacklist evbug
|
||
|
||
# these drivers are very simple, the HID drivers are usually preferred
|
||
blacklist usbmouse
|
||
blacklist usbkbd
|
||
|
||
# replaced by e100
|
||
blacklist eepro100
|
||
|
||
# replaced by tulip
|
||
blacklist de4x5
|
||
|
||
# replaced by tmscsim
|
||
blacklist am53c974
|
||
|
||
# watchdog drivers should be loaded only if a watchdog daemon is installed
|
||
blacklist acquirewdt
|
||
blacklist advantechwdt
|
||
blacklist alim1535_wdt
|
||
blacklist alim7101_wdt
|
||
blacklist booke_wdt
|
||
blacklist cpu5wdt
|
||
blacklist eurotechwdt
|
||
blacklist hpwdt
|
||
blacklist i6300esb
|
||
blacklist i8xx_tco
|
||
blacklist ib700wdt
|
||
blacklist ibmasr
|
||
blacklist indydog
|
||
blacklist ixp2000_wdt
|
||
blacklist ixp4xx_wdt
|
||
blacklist it8712f_wdt
|
||
blacklist iTCO_wdt
|
||
blacklist machzwd
|
||
blacklist mixcomwd
|
||
blacklist mpc8xx_wdt
|
||
blacklist mpcore_wdt
|
||
blacklist mv64x60_wdt
|
||
blacklist pc87413_wdt
|
||
blacklist pcwd
|
||
blacklist pcwd_pci
|
||
blacklist pcwd_usb
|
||
blacklist s3c2410_wdt
|
||
blacklist sa1100_wdt
|
||
blacklist sbc60xxwdt
|
||
blacklist sbc7240_wdt
|
||
blacklist sbc8360
|
||
blacklist sbc_epx_c3
|
||
blacklist sc1200wdt
|
||
blacklist sc520_wdt
|
||
blacklist scx200_wdt
|
||
blacklist shwdt
|
||
blacklist smsc37b787_wdt
|
||
blacklist softdog
|
||
blacklist w83627hf_wdt
|
||
blacklist w83697hf_wdt
|
||
blacklist w83877f_wdt
|
||
blacklist w83977f_wdt
|
||
blacklist wafer5823wdt
|
||
blacklist wdt285
|
||
blacklist wdt977
|
||
blacklist wdt
|
||
blacklist wdt_pci
|
||
|
tareas_puppet/servidores_aula/quita_rayas_intel/leeme.txt | ||
---|---|---|
|
||
Configura los terminales de aula con tarjeta VGA Intel 845 para que desaparezca
|
||
el problema de las rayas en el arranque, asicomo otros problemas relacionados
|
||
con las Xorg en los terminales.
|
||
|
||
Desactiva la carga del modulo i915 en el arranque el nucleo y el DRI en el
|
||
fichero lts.conf.
|
||
|
||
Alfonso Pastor
|
||
IES Virgen de Guadalupe (Caceres).
|
||
|
||
|
||
INSTRUCCIONES DE INSTALACION DEL MODULO
|
||
---------------------------------------
|
||
|
||
Desempaquetar en /etc/puppet/modules.
|
||
Incluirlo en clase-especifica.pp
|
||
|
tareas_puppet/servidores_aula/quita_rayas_intel/manifests/init.pp | ||
---|---|---|
# Configura la tarjeta de video en los P300 para que no se bloqueen. Se desactiva DRI del kernel y las xorg.
|
||
|
||
class quita_rayas_intel {
|
||
|
||
file { "/opt/ltsp/i386/etc/lts.conf":
|
||
owner => root, group => root, mode => 644,
|
||
source => "puppet:///quita_rayas_intel/lts.conf",
|
||
notify => Exec["crear-imagen-quita-rayas-intel"]
|
||
}
|
||
|
||
file { "/opt/ltsp/i386/etc/modprobe.d/blacklist":
|
||
owner => root, group => root, mode => 644,
|
||
source => "puppet:///quita_rayas_intel/blacklist",
|
||
notify => Exec["crear-imagen-quita-rayas-intel"]
|
||
}
|
||
|
||
exec { "crear-imagen-quita-rayas-intel":
|
||
command => "/usr/sbin/ltsp-update-image --arch i386",
|
||
subscribe => [File["/opt/ltsp/i386/etc/lts.conf"], File["/opt/ltsp/i386/etc/modprobe.d/blacklist"]],
|
||
refreshonly => true
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
tareas_puppet/servidores_aula/utilaula/files/conectahost | ||
---|---|---|
#!/bin/bash
|
||
##############################################################################
|
||
# utilaula is free software: you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation, either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
# utilaula is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with utilala. If not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
##############################################################################
|
||
|
||
#
|
||
#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/utilaula/files/apagado | ||
---|---|---|
#!/bin/bash
|
||
##############################################################################
|
||
# utilaula is free software: you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation, either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
# utilaula is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with utilala. If not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
##############################################################################
|
||
|
||
#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
|
||
/sbin/shutdown -h now
|
||
fi
|
||
|
||
tareas_puppet/servidores_aula/utilaula/files/listahosts | ||
---|---|---|
#!/bin/bash
|
||
##############################################################################
|
||
# utilaula is free software: you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation, either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
# utilaula is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with utilala. If not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
##############################################################################
|
||
#
|
||
#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/utilaula/files/arreglosportatil | ||
---|---|---|
#!/bin/bash
|
||
##############################################################################
|
||
# utilaula is free software: you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation, either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
# utilaula is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with utilala. If not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
##############################################################################
|
||
#
|
||
#
|
||
# 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/utilaula/files/reinicio | ||
---|---|---|
#!/bin/bash
|
||
##############################################################################
|
||
# utilaula is free software: you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation, either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
# utilaula is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with utilala. If not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
##############################################################################
|
||
|
||
#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
|
||
/sbin/shutdown -r now
|
||
fi
|
||
|
||
tareas_puppet/servidores_aula/utilaula/files/ejecutaenhosts | ||
---|---|---|
#!/bin/bash
|
||
##############################################################################
|
||
# utilaula is free software: you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation, either version 3 of the License, or
|
||
# (at your option) any later version.
|
||
# utilaula is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with utilala. If not, see <http://www.gnu.org/licenses/>.
|
||
#
|
||
##############################################################################
|
||
#
|
||
#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 $*
|
||
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="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/utilaula/leeme.txt | ||
---|---|---|
utilaula
|
||
|
||
|
||
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/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 con soporte de portatiles
|
tareas_puppet/servidores_aula/utilaula/manifests/init.pp | ||
---|---|---|
class utilaula {
|
||
|
||
file {
|
||
|
||
"/sbin/conectahost":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///utilaula/conectahost";
|
||
|
||
"/sbin/listahosts":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///utilaula/listahosts";
|
||
|
||
|
||
"/sbin/ejecutaenhosts":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///utilaula/ejecutaenhosts";
|
||
|
||
"/sbin/arreglosportatil":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///utilaula/arreglosportatil";
|
||
|
||
"/sbin/apagado":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///utilaula/apagado";
|
||
|
||
"/sbin/reinicio":
|
||
owner => root, group => root, mode => 750,
|
||
source => "puppet:///utilaula/reinicio";
|
||
|
||
"/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",
|
||
notify => Exec[crear-imagen-utilaula];
|
||
}
|
||
|
||
|
||
exec { "crear-imagen-utilaula":
|
||
command => "/usr/sbin/ltsp-update-image --arch i386",
|
||
refreshonly => true;
|
||
}
|
||
|
||
}
|
||
|
tareas_puppet/servidores_aula/logrotate-controlaula/files/controlaula | ||
---|---|---|
/var/log/controlaula.log
|
||
{
|
||
rotate 7
|
||
daily
|
||
missingok
|
||
notifempty
|
||
delaycompress
|
||
compress
|
||
}
|
tareas_puppet/servidores_aula/logrotate-controlaula/leeme.txt | ||
---|---|---|
BREVE DESCRIPCION DE LA EJECUCION DEL MODULO
|
||
--------------------------------------------
|
||
|
||
Este modulo incluye el fichero controlaula dentro de /etc/logrotate.d en el servidor de aula
|
||
para que se haga la rotación del log generado en /var/log.
|
||
|
||
INSTRUCCIONES DE INSTALACION DEL MODULO
|
||
---------------------------------------
|
||
|
||
Desempaquetar en /etc/puppet/modules
|
||
Incluir la linea include "nombre_modulo" en /etc/puppet/manifests/classes/clase-especifica.pp
|
||
|
||
------------------------------------------------
|
||
|
||
02-Diciembre-2011.
|
||
Francisco Rodrigo L?pez
|
||
Administrador inform?tico del IES JAVIER GARCIA TELLEZ
|
||
tareas_puppet/servidores_aula/logrotate-controlaula/manifests/init.pp | ||
---|---|---|
class logrotate-controlaula {
|
||
|
||
file { "/etc/logrotate.d/controlaula":
|
||
owner => root, group => root, mode => 644,
|
||
source => "puppet:///logrotate-controlaula/controlaula",
|
||
checksum => md5,
|
||
}
|
||
|
||
}
|
||
|
tareas_puppet/servidores_aula/apagar_no_usados/files/comprobar_login | ||
---|---|---|
#Comprueba si el equipo lleva mas de X minutos en la pantalla login, y si es
|
||
#así, lo apaga.
|
||
|
||
*/1 * * * * root /root/adormir.sh
|
||
|
tareas_puppet/servidores_aula/apagar_no_usados/files/S99_borra_testigo.sh | ||
---|---|---|
#/bin/bash
|
||
#para guardar en /usr/share/ldm/rc.d de la imagen de los clientes.
|
||
#Debe empezar por SXX para que se ejecute en el arranque de sesión en el orden XX
|
||
#Borra el fichero /root/ocioso cuando hace login un usuario, para desactivar el
|
||
#apagado por inactividad.
|
||
|
||
test -e /root/ocioso && rm /root/ocioso
|
||
|
||
|
||
tareas_puppet/servidores_aula/apagar_no_usados/files/adormir.sh | ||
---|---|---|
#/bin/bash
|
||
|
||
#Poner en el crontab para que se ejecute cada minuto.
|
||
#Comprueba si hay alguien logueado en el terminal o bien está ejecutandose
|
||
#el cañon vlc de Aulalinex o el vnc-proyectr
|
||
|
||
|
||
#Opciones para ver si hay alguien logado
|
||
# logado=$(ps aux | grep "ssh.*192.168.0.254" | grep -v grep | wc -l)
|
||
# logado=$(cat /var/run/ltsplogin192.168.0.254) <-devuelve el login del usuario que ha entrado, lo malo es que si sale de sesión no se borra.
|
||
# Y la que usamos, copiada de controlaula:
|
||
|
||
logado=$(ps aux | grep "LTSP_CLIENT" | grep -v grep | wc -l) #Si alguien esta logado, la conexion con el servidor de aula tiene esta cadena.
|
||
vlcenuso=$(ps aux | grep vlc | grep -v grep | wc -l) #Por si se está proyectando video sin alumnos logados.
|
||
vncenuso=$(ps aux | grep vnc | grep -v grep | wc -l) #Por si se está proyectando escritorio sin alumnos logados.
|
||
if [ $logado -eq 1 -o $vlcenuso -eq 1 -o $vncenuso -eq 1 ]
|
||
then
|
||
test -e /root/ocioso && rm /root/ocioso
|
||
else
|
||
if [ ! -e /root/ocioso ]
|
||
then
|
||
touch /root/ocioso
|
||
else
|
||
seg1=$(stat -c%X /root/ocioso)
|
||
seg2=$(date +%s)
|
||
segundos=$(expr $seg2 - $seg1)
|
||
if [ $segundos -gt 121 ] # mas de 3 minutos encendido sin que entre nadie.
|
||
then
|
||
gxmessage -display :7 -timeout 30 -center -button "No apagar" "Este ordenador no se esta usando.
|
||
El sistema se apagara en 30 segundos."
|
||
if [ $? -ne 101 ]
|
||
then
|
||
/etc/init.d/avahi-daemon stop
|
||
/usr/sbin/ethtool -s eth0 wol g 2>/dev/null
|
||
/usr/bin/killall -9 x-session-manager
|
||
/sbin/poweroff -fp &
|
||
else
|
||
touch /root/ocioso
|
||
fi
|
||
fi
|
||
fi
|
||
fi
|
||
tareas_puppet/servidores_aula/apagar_no_usados/leeme.txt | ||
---|---|---|
Versión 1.1
|
||
Fecha ultima revisión: 14-11-2011
|
||
|
||
Apaga automaticamente los thinclient que lleven mas de X minutos en la pantalla
|
||
de login sin haber entrado ningún usuario.
|
||
Por defecto espera 4-5 minutos, pero se puede modificar en el script files/adormir.sh.
|
||
Si un usuario hace logon en el equipo, se desactiva el apagado hasta que salga.
|
||
|
||
Muestra un mensaje 30 segundos antes del apagado, que permite al usuario parar el
|
||
apagado si desea entrar.
|
||
|
||
Se incluye en clase-especifica como cualquier otra tarea puppet de las aplicadas.
|
||
|
||
|
||
31-1-2011
|
||
Alfonso Pastor.
|
||
IES Virgen de Guadalupe.
|
||
|
||
MODIFICACIÓN 14-11-2011
|
||
=======================
|
||
|
||
Detectado error que puede causar que ocasionalmente se apaguen los equipos aun teniendo un alumno logado.
|
||
Cambiado el script adormir.sh para que ahora funcione correctamente.
|
||
|
||
Antes se preguntaba
|
||
|
||
if (ps aux | grep "LTSP_CLIENT" | wc -l) > 1 then esta logado.
|
||
|
||
Este if fallaba a veces en ordenadores donde el alumno no estuviese trabajando mucho. En vez de devolver 2
|
||
siempre que hubiese un alumno logado, en algunas ocasiones devolvía 1.
|
||
|
||
Ahora se pregunta:
|
||
|
||
if (ps aux | grep "LTSP_CLIENT" | grep -v grep | wc -l) =1 then esta logado.
|
||
|
||
|
tareas_puppet/servidores_aula/apagar_no_usados/manifests/init.pp | ||
---|---|---|
|
||
class apagar_no_usados {
|
||
|
||
file { "/opt/ltsp/i386/usr/share/ldm/rc.d/S99_borra_testigo.sh":
|
||
owner => root, group => root, mode => 755,
|
||
source => "puppet:///apagar_no_usados/S99_borra_testigo.sh",
|
||
notify => Exec["actualiza-imagen-apagado"],
|
||
}
|
||
|
||
file { "/opt/ltsp/i386/etc/cron.d/comprobar_login":
|
||
owner => root, group => root, mode => 644,
|
||
source => "puppet:///apagar_no_usados/comprobar_login",
|
||
notify => Exec["actualiza-imagen-apagado"],
|
||
}
|
||
file { "/opt/ltsp/i386/root/adormir.sh":
|
||
owner => root, group => root, mode => 755,
|
||
source => "puppet:///apagar_no_usados/adormir.sh",
|
||
notify => Exec["actualiza-imagen-apagado"],
|
||
}
|
||
exec { "instalar-gxmessage":
|
||
command => "/usr/sbin/chroot /opt/ltsp/i386 /usr/bin/apt-get -y update ; /usr/sbin/chroot /opt/ltsp/i386 /usr/bin/apt-get install -y gmessage ; /usr/sbin/chroot /opt/ltsp/i386 /usr/bin/dpkg --configure -a",
|
||
before => Exec["actualiza-imagen-apagado"],
|
||
unless => "/usr/sbin/chroot /opt/ltsp/i386 dpkg -l gmessage | cut -d' ' -f1 | grep ii > /dev/null",
|
||
notify => Exec["actualiza-imagen-apagado"],
|
||
}
|
||
|
||
exec { "instalar-gxmessage-mayhave-chroot":
|
||
command => "/bin/echo gmessage >> /opt/ltsp/i386/etc/pkgsync/mayhave",
|
||
before => Exec["actualiza-imagen-apagado"],
|
||
unless => "/bin/grep -i gmessage /opt/ltsp/i386/etc/pkgsync/mayhave > /dev/null",
|
||
notify => Exec["actualiza-imagen-apagado"],
|
||
}
|
||
|
||
|
||
exec { "actualiza-imagen-apagado":
|
||
command => "/usr/sbin/ltsp-update-image --arch i386",
|
||
refreshonly => true,
|
||
}
|
||
|
||
}
|
||
|
tareas_puppet/servidores_aula/quita_actualizacion_bios_terminales/leeme.txt | ||
---|---|---|
ACTUALIZACION BIOS
|
||
==================
|
||
|
||
Tarea puppet que actualiza la configuración de la BIOS de los ordenadores de los alumnos (ojo, no
|
||
actualiza la version de la BIOS, sino su configuracion). Util para poner la misma configuracon de
|
||
BIOS (orden de arranque, contraseña, configuracion USB/LPT1, etc) en todos los equipos sin tener
|
||
que ir entrando uno a uno y cambiarla a mano.
|
||
|
||
AVISOS:
|
||
=======
|
||
|
||
-Este paquete está preparado con la BIOS de los Fujitsu P300 y no deberia funcionar en equipos
|
||
distintos. Para prepararla otros equipos, leer bien este documento HASTA EL FINAL, especialmente
|
||
n el apartado de como generar una copia de seguridad de una BIOS para nuestro caso particular,
|
||
antes de hacer nada.
|
||
|
||
-Este paquete está formado por 2 tareas puppet:
|
||
|
||
actualiza_bios_terminales: que hace modificaciones en la imagen para actualizar la bios en
|
||
el arranque de los terminales.
|
||
|
||
quita_actualizacion_bios_terminales: quita las modificaciones y deja la imagen como estaba,
|
||
despues de haber actualizado la BIOS.
|
||
|
||
Hay dos tareas por un motivo: si se pone solo la primera el script de actualizacion de la BIOS
|
||
queda en la imagen de los clientes de aula y se ejecutará cada vez que se arranquen estos. En
|
||
principio esto no es malo, pero tampoco queda bien actualizar la BIOS en cada arranque, simplemente
|
||
es suficiente con actualizarla una vez. Por ese motivo existe la tarea contraria, que desactiva esta
|
||
actualización.
|
||
|
||
No hemos encontrado la manera de poder hacerlo todo en una sola tarea puppet.
|
||
|
||
USO:
|
||
====
|
||
|
||
1) Descomprimir el fichero en /etc/puppet/modules del servidor principal, creará dos carpetas, una
|
||
para cada terea.
|
||
|
||
2) Es conveniente ir actualizando aula a aula. Supongamos que queremos actualizar la BIOS en el aula "a02".
|
||
|
||
-Añadimos a /etc/puppet/manifests/classes/clase-especifica.pp y añades lo siguiente dentro del fichero:
|
||
|
||
node "a02-pro" inherits default {
|
||
include "actualiza_bios_terminales"
|
||
# include "quita_actualizacion_bios_terminales"
|
||
}
|
||
|
||
-Nos vamos fisicamente al aula y forzamos con puppetd -t a que aplique la regla, sin esperar a que
|
||
lo haga automaticamente.
|
||
|
||
-Cuando haya acabado, abrimos controlaula/aulalinex y encendemos todos los terminales. Es muy
|
||
importante que se enciendan todos por completo hasta la pantalla de login, ya que si alguno no
|
||
arranca su BIOS no se actualizará.
|
||
|
||
-Cuando veamos que todos los terminales tienen la pantalla de login de Lenny, los apagamos.
|
||
|
||
-Nos conectamos al servidor del centro y de nuevo editamos clase-especifica, descomentando el segundo
|
||
include y comentando el primero:
|
||
|
||
node "a02-pro" inherits default {
|
||
# include "actualiza_bios_terminales"
|
||
include "quita_actualizacion_bios_terminales"
|
||
}
|
||
|
||
-Ahora forzamos de nuevo un puppetd -t en el servidor de aula para asegurarnos en el momento
|
||
de que se quita la actualización de la BIOS de la imagen de los clientes. Tampoco es necesario
|
||
hacerlo en ese momento, podemos dejar que puppet lo haga cuando toque, pero yo prefiero hacerlo
|
||
cuanto antes y ya no me preocupo mas.
|
||
|
||
-Por último, cuando se haya ejecutado la regla correctamente, editamos de nuevo clase-especifica
|
||
y la quedamos (tambien podemos borrar los include):
|
||
|
||
node "a02-pro" inherits default {
|
||
# include "actualiza_bios_terminales"
|
||
# include "quita_actualizacion_bios_terminales"
|
||
}
|
||
|
||
|
||
-Y ya está. Si encendemos un terminal cualquiera y entramos en su BIOS con F2 (o la tecla que
|
||
corresponda) veremos que ya tiene la BIOS tal como hicimos la copia.
|
||
|
||
3) Repetir estos pasos para todas las aulas cuando vayan quedando libres.
|
||
|
||
4) Tampoco es necesario estar fisicamente en las aulas si todo va bien. Podemos conectarnos con ssh -X
|
||
al servidor de aula, hacer las actualización por puppet, abrir el aulalinex remotamente, encender
|
||
los equipos y si se encienden todos podemos estar seguros de que se les ha actualizado la BIOS.
|
||
Solo tendriamos que ir al aula fisicamente si no se ha llegado a encender algún equipo concreto,
|
||
para ver que le pasa y encenderlo tu a mano.
|
||
|
||
IMPORTANTE: COMO GENERAR UNA COPIA DE LA BIOS A NUESTRA MEDIDA.
|
||
===============================================================
|
||
|
||
Leer esto si queremos tener una versión personalizada de la BIOS, hecha a nuestro gusto, o bien los
|
||
equipos de nuestro centro no son Fujitsu P300 y por tanto la copia que se adjunta a la tarea no debería
|
||
funcionar. Los ficheros clave son dos (están en /etc/puppet/modules/actualiza_bios_terminales/files):
|
||
|
||
* cmospwd: este es el ejecutable que permite clonar y restaurar la configuración de la BIOS.
|
||
Está sacado del CD de rescate de los servidores de aula, ya que es el que usa backharddi
|
||
para machacar la BIOS de los servidores al restaurar la imagen.
|
||
* cmosbackup: este fichero es el que almacena la copia de la configuración de la BIOS, siempre
|
||
tiene 384 bytes (o al menos eso me parece a mi).
|
||
|
||
Los pasos son:
|
||
|
||
-Entrar en la BIOS del equipo y modificarla a nuestro gusto (orden de arranque, clave de la BIOS,
|
||
activar/desactivar USB, LPT1, etc).
|
||
|
||
-Arrancar un Linux en el equipo y copiar el fichero cmospwd a la carpeta /root de dicho Linux. Podemos
|
||
copiarlo desde una unidad de red compartida por nfs, por scp, con wget.
|
||
|
||
-Como usuario root hacemos:
|
||
|
||
./cmospwd /d /w cmosbackup
|
||
|
||
y hará la copia de la configuración BIOS en el fichero cmosbackup (podemos poner otro nombre, pero la
|
||
tarea puppet esta configurada para usar ese nombre en concreto).
|
||
|
||
-Ese fichero cmosbackup lo metemos en la tarea puppet sobreescribiendo el que hay en
|
||
|
||
/etc/puppet/modules/actualiza_bios_terminales/files
|
||
|
||
del servidor nfs (lo mas comodo es copiarlo por scp), y ya podremos usar la tarea puppet con nuestra
|
||
flamante BIOS.
|
||
|
||
-Si quermos restaurar la configuración a mano en un equipo suelto de por ahi (por ejemplo, un workstation),
|
||
copiamos al equipo los ficheros cmospwd y cmosbackup, abrimos un terminal y como root hacemos:
|
||
|
||
./cmospwd /d /r cmosbackup
|
||
|
||
Esto abre un menú con tres opciones:
|
||
|
||
1) Restaurar la configuracion
|
||
2) Restaurar la configuracion manteniendo la fecha y hora
|
||
3) No hacer nada,
|
||
|
||
Cogemos la segunda y ya está.
|
||
|
||
Si nos queremos ahorrar el paso de elegir opción podemos hacer:
|
||
|
||
echo 2 | /root/cmospwd /d /r /root/cmosbackup
|
||
|
||
=====================================================================================================================
|
||
|
||
Alfonso Pastor
|
||
IES Virgen de Guadalupe. 2010-11.
|
||
|
||
|
||
|
tareas_puppet/servidores_aula/quita_actualizacion_bios_terminales/manifests/init.pp | ||
---|---|---|
|
||
class quita_actualizacion_bios_terminales {
|
||
|
||
exec { "/bin/rm /opt/ltsp/i386/etc/rc2.d/S99updcmos.sh; /usr/sbin/ltsp-update-image --arch i386" :
|
||
}
|
||
|
||
}
|
||
|
||
|
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 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/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/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
|
||
* 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 avahi-browse, ssh 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.
|
||
|
||
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
|
||
01-Marzo-2012 (última modificación)
|
tareas_puppet/servidores_aula/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/gdm/PostSession/Default':
|
||
unless => '/bin/grep "apagaterminales" /etc/gdm/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"
|
||
}
|
||
|
||
}
|
tareas_puppet/servidores_aula/squid-ltsp/files/deny_https_iptables | ||
---|---|---|
#! /bin/sh
|
||
### BEGIN INIT INFO
|
||
# Provides: deny https
|
||
# Required-Start: $remote_fs
|
||
# Should-Start: $network
|
||
# Required-Stop: $remote_fs
|
||
# Should-Stop: $network
|
||
# Default-Start: 2 3 4 5
|
||
# Default-Stop: 0 1 6
|
||
# Short-Description: Deny https
|
||
# Description: Deny https
|
||
#
|
||
### END INIT INFO
|
||
#----------------------------------------------------------------------------------------
|
||
# Antonio J. Abasolo Sierra (Mayo-2010)
|
||
# Modificado por Francisco Rodrigo López (Octubre - 2011)
|
||
#----------------------------------------------------------------------------------------
|
||
# Controla la activación/desactivación de reglas iptables
|
||
# que cortan el tráfico https para todas las webs externas, e ips del centro
|
||
# que indiquemos en su fichero de configuración.
|
||
#
|
||
# Depende del fichero de configuración "/etc/squid/acl/deny_https".
|
||
#
|
||
# La regla "iptables-restore < /etc/network/iptables" se pone por seguridad:
|
||
# ya que se ejecuta tras eliminar las reglas, en cuyo momento la situación
|
||
# ya debería ser la misma que plantea esta línea.
|
||
#
|
||
# Se incluye cortar el tráfico facebook mediante rangos.
|
||
#
|
||
#----------------------------------------------------------------------------------------
|
||
|
||
#----------------------------------------------------------------------------------------
|
||
IPTABLES=/sbin/iptables
|
||
DENY_HTTPS=/etc/squid/acl/deny_https
|
||
RED=`ifconfig | grep Bcast | cut -f2 -d: | awk '{print }' | cut -f1 -d.`
|
||
|
||
#iptables -A FORWARD -p tcp --dport 443 -d WEB -j DROP
|
||
#iptables -A FORWARD -p tcp --dport 443 -s IP -j DROP
|
||
|
||
# Bail out if no iptables binary or no configuration
|
||
[ -x ${IPTABLES} -a "$DENY_HTTPS" ] || exit 0
|
||
|
||
clear
|
||
|
||
#----------------------------------------------------------------------------------------
|
||
do_status() {
|
||
echo ""
|
||
echo "ESTADO ACTUAL DE LAS REGLAS ..."
|
||
echo "----------------------------------------------------"
|
||
$IPTABLES -L
|
||
echo "----------------------------------------------------"
|
||
}
|
||
|
||
#----------------------------------------------------------------------------------------
|
||
do_start() {
|
||
echo "ACTIVANDO reglas para controlar el tráfico https:"
|
||
echo "-------------------------------------------------"
|
||
iptables-restore < /etc/network/iptables
|
||
egrep -v '#|^$' $DENY_HTTPS | awk '{print $1}' | while read LINEA; do
|
||
if [ `echo $LINEA | grep $RED` ]; then OPCION="-s"; else OPCION="-d"; fi
|
||
echo " * Denegando https a $LINEA ..."
|
||
$IPTABLES -A FORWARD -p tcp --dport 443 $OPCION $LINEA -j REJECT 2> /dev/null
|
||
done
|
||
cortar_facebook
|
||
echo " ----------------------------------------------"
|
||
echo " * EL TRAFICO HTTPS ESTA RESTRINGIDO."
|
||
echo ""
|
||
}
|
||
|
||
do_stop() {
|
||
echo "DESACTIVANDO reglas para controlar el tráfico https:"
|
||
echo "-------------------------------------------------"
|
||
egrep -v '#|^$' $DENY_HTTPS | awk '{print $1}' | while read LINEA; do
|
||
if [ `echo $LINEA | grep $RED` ]; then OPCION="-s"; else OPCION="-d"; fi
|
||
echo " * Eliminando regla https para $LINEA ..."
|
||
$IPTABLES -D FORWARD -p tcp --dport 443 $OPCION $LINEA -j REJECT 2> /dev/null
|
||
done
|
||
echo " * Eliminando reglas https para facebook (rangos) ..."
|
||
iptables-restore < /etc/network/iptables
|
||
echo " -----------------------------------------------"
|
||
echo " * EL TRAFICO HTTPS ESTA LIBERADO."
|
||
echo ""
|
||
}
|
||
|
||
do_restart() {
|
||
do_stop
|
||
do_start
|
||
}
|
||
|
||
cortar_facebook() {
|
||
iptables -N FACEBOOK
|
||
|
||
echo " * Denegando https para facebook (rangos) ..."
|
||
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 66.220.144.0-66.220.159.255 --dport 443 -j FACEBOOK
|
||
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.63.176.0-69.63.191.255 --dport 443 -j FACEBOOK
|
||
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 69.171.0.0-69.171.242.255 --dport 443 -j FACEBOOK
|
||
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 184.50.162.0-184.50.162.255 --dport 443 -j FACEBOOK
|
||
iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range 204.15.20.0-204.15.23.255 --dport 443 -j FACEBOOK
|
||
|
||
iptables -A FACEBOOK -j REJECT
|
||
}
|
||
|
||
#----------------------------------------------------------------------------------------
|
||
case "$1" in
|
||
start)
|
||
do_start
|
||
# do_status
|
||
;;
|
||
stop)
|
||
do_stop
|
||
# do_status
|
||
;;
|
||
restart|force-reload)
|
||
do_restart
|
||
# do_status
|
||
;;
|
||
status)
|
||
do_status
|
||
;;
|
||
*)
|
||
echo "Usage: $0 {start|stop|restart|force-reload|status}"
|
||
exit 2
|
||
;;
|
||
esac
|
||
exit 0
|
||
#----------------------------------------------------------------------------------------
|
||
|
||
tareas_puppet/servidores_aula/squid-ltsp/files/cache_refresh.conf | ||
---|---|---|
# ======================= #
|
||
# EL REFRESCO DE LA CACHE #
|
||
# ======================= #
|
||
# Después del cache definimos cuanto tiempo lo guardamos, básicamente la expresión regula:
|
||
# el tiempo mínimo antes de descargar de nuevo (en minutos), el porcentaje de envejecimiento
|
||
# y el tiempo máximo para considerarse viejo (en minutos)
|
||
# El tiempo que deseemos mantener almacenado algo es relativo a nuestro trabajo,
|
||
# en todo caso por motivos de actualizaciones lo ideal no es dejar muy alto los valores de los archivos .deb .rpm,
|
||
# y si la gente de Microsoft trabajara en serio en parches, deberia acortarse ese tiempo, pero como no es así...
|
||
# Recordemos que sólo almacenará los archivos que estén dentro del maximum_object_size
|
||
|
||
# Paquetes Debian: mínimo y máximo de 1 dia antes de descargar de nuevo
|
||
refresh_pattern -i \.deb$ 1440 100% 1440
|
||
|
||
# Imagenes: minimo 1 dia maximo 3 antes de descargar de nuevo
|
||
refresh_pattern -i \.gif$ 1440 80% 4320
|
||
refresh_pattern -i \.tiff?$ 1440 80% 4320
|
||
refresh_pattern -i \.bmp$ 1440 80% 4320
|
||
refresh_pattern -i \.jpe?g$ 1440 80% 4320
|
||
refresh_pattern -i \.xbm$ 1440 80% 4320
|
||
refresh_pattern -i \.png$ 1440 80% 4320
|
||
refresh_pattern -i \.wrl$ 1440 80% 4320
|
||
refresh_pattern -i \.ico$ 1440 80% 4320
|
||
refresh_pattern -i \.pnm$ 1440 80% 4320
|
||
refresh_pattern -i \.pbm$ 1440 80% 4320
|
||
refresh_pattern -i \.pgm$ 1440 80% 4320
|
||
refresh_pattern -i \.ppm$ 1440 80% 4320
|
||
refresh_pattern -i \.rgb$ 1440 80% 4320
|
||
refresh_pattern -i \.ppm$ 1440 80% 4320
|
||
refresh_pattern -i \.rgb$ 1440 80% 4320
|
||
refresh_pattern -i \.xpm$ 1440 80% 4320
|
||
refresh_pattern -i \.xwd$ 1440 80% 4320
|
||
refresh_pattern -i \.pict?$ 1440 80% 4320
|
||
|
||
# Video: minimo 10 dias, maximo 30
|
||
refresh_pattern -i \.mov$ 14400 80% 43200
|
||
refresh_pattern -i \.mpe?g?$ 14400 80% 43200
|
||
refresh_pattern -i \.avi$ 14400 80% 43200
|
||
refresh_pattern -i \.qtm?$ 14400 80% 43200
|
||
refresh_pattern -i \.viv$ 14400 80% 43200
|
||
refresh_pattern -i \.swf$ 14400 80% 43200
|
||
#refresh_pattern -i \.flv$ 14400 80% 43200
|
||
|
||
# Sonido: idem que video
|
||
refresh_pattern -i \.wav$ 14400 80% 43200
|
||
refresh_pattern -i \.aiff?$ 14400 80% 43200
|
||
refresh_pattern -i \.au$ 14400 80% 43200
|
||
refresh_pattern -i \.ram?$ 14400 80% 43200
|
||
refresh_pattern -i \.snd$ 14400 80% 43200
|
||
refresh_pattern -i \.mid$ 14400 80% 43200
|
||
refresh_pattern -i \.mp2$ 14400 80% 43200
|
||
refresh_pattern -i \.mp3$ 14400 80% 43200
|
||
refresh_pattern -i \.ogg$ 14400 80% 43200
|
||
|
||
# Archivos: idem que video
|
||
refresh_pattern -i \.tar$ 14400 80% 43200
|
||
refresh_pattern -i \.gz$ 14400 80% 43200
|
||
refresh_pattern -i \.bz2$ 14400 100% 43200
|
||
refresh_pattern -i \.exe$ 14400 80% 43200
|
||
refresh_pattern -i \.cab$ 14400 80% 43200
|
||
refresh_pattern -i \.zip$ 14400 80% 43200
|
||
refresh_pattern -i \.arj$ 14400 80% 43200
|
||
refresh_pattern -i \.rar$ 14400 80% 43200
|
||
refresh_pattern -i \.sit$ 14400 80% 43200
|
||
refresh_pattern -i \.lzh$ 14400 80% 43200
|
||
refresh_pattern -i \.lha$ 14400 80% 43200
|
||
refresh_pattern -i \.hqx$ 14400 80% 43200
|
||
refresh_pattern -i \.z$ 14400 80% 43200
|
||
refresh_pattern -i \.a[0-9][0-9]$ 14400 80% 43200
|
||
refresh_pattern -i \.r[0-9][0-9]$ 14400 80% 43200
|
||
|
||
# Archivos de datos: idem que video
|
||
refresh_pattern -i \.txt$ 14400 80% 43200
|
||
refresh_pattern -i \.pdf$ 14400 80% 43200
|
||
refresh_pattern -i \.doc$ 14400 80% 43200
|
||
refresh_pattern -i \.rtf$ 14400 80% 43200
|
||
refresh_pattern -i \.tex$ 14400 80% 43200
|
||
refresh_pattern -i \.latex$ 14400 80% 43200
|
||
|
||
# Objetos Java-type: idem que video
|
||
refresh_pattern -i \.class$ 14400 80% 43200
|
||
refresh_pattern -i \.js$ 14400 80% 43200
|
||
refresh_pattern -i \.class$ 14400 80% 43200
|
||
|
||
# Objetos Web-type:
|
||
refresh_pattern -i \.css$ 10 20% 4320
|
||
refresh_pattern -i \.html?$ 10 20% 4320
|
||
refresh_pattern -i \/$ 10 20% 4320
|
||
|
||
# Para evitar problemas con scripts .do
|
||
refresh_pattern -i \.do$ 0 0% 1440
|
||
tareas_puppet/servidores_aula/squid-ltsp/files/LEER | ||
---|---|---|
Configuración de squid.conf
|
||
---------------------------
|
||
|
||
Sobre las reglas de filtrado hay que tener en cuenta lo siguiente:
|
||
|
||
a) Las reglas se ejecutan en el mismo orden en el que se encuentran activadas
|
||
dentro del fichero de configuración de squid, es decir, /etc/squid/squid.conf
|
||
|
||
b) Las listas de control de acceso (acl) nunca pueden estar vacías, pues sino squid no arrancará.
|
||
|
||
c) Las reglas se ejecutan en este orden:
|
||
|
||
Las primeras 3 reglas tratan el acceso de 3 aplicaciones:
|
||
#----------------------------------------------------------------------------------------------------------
|
||
1.- Se deniega IExplorer
|
||
Como es la primera regla, prohibe expresamente el uso de internet explorer
|
||
|
||
2.- Se acepta winupdate
|
||
Se permite el acceso al windowsupdate para las actualizaciones
|
||
|
||
3.- Se deniega messenger
|
||
- Aplicación
|
||
- gateway.dll
|
||
- Método POST
|
||
- Puerto: 1863
|
||
|
Exportar a: Unified diff
reestructurando tareas puppet para diferenciar lenny de squeeze, subida tarea ltsp_squid para squeeze