viernes, 2 de septiembre de 2011


Vuelta de vacaciones. Sentimientos cruzados de alegría por volver a ver a los compañeros, y tristeza por el final del verano, un gran verano: curso en Valladolid, despedidas de soltero, bodas, y el gran Europe tour 2011 en el bandidito, a ver cuando pongo algunas fotillos en el flickr (tengo que filtrar de las 2800 que tengo).

Pero aqui estamos para hablar de cosas de informática, así que vamos a ello. Como cada año, por estas fechas toca formatear y preparar los equipos con todo el tinglado de linux, maquinas virtuales, italc... etc para finalmente clonarlos con drbl. Espero poder contar muchas cosillas del drbl en futuros post, es una pasada de live cd para clonacion de equipos. El caso es que hoy mirando que guardar de los equipos, me acorde de un pequeño shell script que me sirvió para neutralizar a los alumnos más rebeldes. Durante el pasado curso, dichos alumnos al sentirse muy oprimidos por el autoritario y abusivo uso de italc que les impedia jugar a thewest y similares superjuegos online, decidieron desconectar el cable de red para poder sentirse más libres jugando a sus juegos localmente (sin internet... pero libres). Ante tal despliegue de técnica, el italc no podía defenderse, asi que se me ocurrió escribir un pequeño script para ayudarle a seguir su dictadura.

El script es el siguiente:

ping -c 1 192.168.0.50 > /dev/null 2> /dev/null

if [ $? -eq 1 ]; then
     killall -s STOP X
else
     killall -s CONT X
fi



Teniendo en cuenta que el ordenador del profesor es la ip 192.168.0.50 dentro de la red local, este script lanza un ping, si el resultado es positivo le manda al servidor X (entorno gráfico) la señal de continuar, en caso contrario (cuando el alumno desconecta el cable), manda la señal de pausa a dicho proceso. Resultado, el ordenador se queda congelado, no funciona ni tan siquiera el teclado para matar las X. Si se vuelve a conectar el cable, cuando se vuelva a lanzar el script, el ordenador se descongelara al recibir el proceso X la señal de continuar.
Para que esto funcione, debemos añadir la ejecución del script al crond del sistema (comando crontab -e) para que se lance cada... digamos.... ¿20 segundos?. Aquí podemos poner el valor que queramos. Por ejemplo, con esta línea ejecutamos cada 2 minutos todos los scripts de la carpeta /etc/crond/cron.hourly que tengan permiso de ejecución.


*/2 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null

Pegas de este invento: como el equipo del profe no arranque tendremos que montar algo a lo que se pueda hacer ping con esa ip para que los equipos funcionen.... y como se rompa el swicht tendremos problemas. Por ello, solo puse este script en los equipos necesarios.

4 comentarios:

Kevin De Andrés dijo...

Que buen script, como bien has dicho como falle el de profesor todos se van al carajo.
En cuanto a lo de equipos necesarios te referirás al aula completa, o sabes ya donde se van a poner cada alumno? O_O

Algunos profesores no encienden el ordenador cuando quieren que los alumnos trabajen el local, a si que supongo que tampoco se podría hacer ping a ese otro equipo al que comprobar no ?

Fon dijo...

Hola Kokoparkletal,lo instalamos solo en los equipos que alguna vez quitaron el cable de red, que fueron dos. De hecho se podria hacer otro script para hacer un log de las veces que esta desconectado para comprobarlo. En cuanto al ordenador del profesor, lo normal es que este encendido, pero me imagino que habra otra manera mejor de poder comprobar si esta conectado o no, pero esta fue la primera que se me ocurrio.

Kevin De Andrés dijo...

¿Se podria hacer algo similar con la MAC del Switch por ejemplo ?

Fon dijo...

Lo veo dificil. Creo que la mejor manera es comprobar que el enlace esta activo en la tarjeta de red con ifconfig.