root/wifi-ltsp/trunk/configura_hostapd.py @ 50
50 | jredrejo | #!/usr/bin/python
|
|
49 | elisa_apar | # -*- coding: utf-8 -*-
|
|
# Project: wifi-ltsp
|
|||
50 | jredrejo | # Module: configura_hostapd.py
|
|
49 | elisa_apar | # Purpose: genera un archivo hostapc.accept para dar acceso a internet a los alumnos.
|
|
# Language: Python 2.5
|
|||
# Date: 07-Feb-2011.
|
|||
# Ver: 07-Feb-2011.
|
|||
# Author: Isabel Aparicio Pérez
|
|||
# Copyright: 2011 - Isabel Aparicio Pérez <prog5pe@edu.juntaextremadura.net>
|
|||
#
|
|||
50 | jredrejo | # wifi-ltsp is free software: you can redistribute it and/or modify
|
|
49 | elisa_apar | # 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.
|
|||
# Script2 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
|
|||
50 | jredrejo | # along with wifi-ltsp. If not, see <http://www.gnu.org/licenses/>.
|
|
49 | elisa_apar | ||
""" Este programa genera el archivo hostapd.access necesario para que en el momento del logueo del
|
|||
profesor se de acceso a internet a los alumnos que tienen clase en esa hora con ese profesor. Para ello
|
|||
tenemos que recoger el dia de la semana y la hora actual que tiene el servidor de aula y con el dia actual
|
|||
buscar en el servidor nfs el fichero del dia de la semana que corresponde con el dia concreto. El fichero
|
|||
descargado del servidor nfs se almacena en el servidor de aula en la ruta /wifi con el nombre horario.txt.
|
|||
Tambien controlamos el usuario que esta logueado en ese preciso momento en el servidor. A partir del usuario
|
|||
logueado, de la hora del sistema y del fichero descargado del servidor nfs se genera el fichero hostapd.access
|
|||
con las mac de los alumnos correspondientes.
|
|||
Isabel Aparicio Pérez
|
|||
Consejería de Educacion.
|
|||
prog5pe@edu.juntaextremadura.net
|
|||
"""
|
|||
import time
|
|||
import urllib
|
|||
import os
|
|||
import errno
|
|||
import sys
|
|||
import re
|
|||
#Expresiones regulares
|
|||
fecha=[]
|
|||
ip=[]
|
|||
dia_semana={"Mon":"lunes.txt","Tue":"martes.txt","Wed":"miercoles.txt","Thu":"jueves.txt","Fri":"viernes.txt"}
|
|||
def dia_actual():
|
|||
"""con esta funcion se obtiene la fecha actual que tiene el servidor de aula"""
|
|||
fecha = time.asctime()
|
|||
return fecha
|
|||
def fichero_semana(fecha):
|
|||
"""Con esta funcion se obtiene la parte de la fecha actual que corresponde con el dia de la semana"""
|
|||
dia= fecha[0:3]
|
|||
if dia not in ["Mon","Tue","Web","Thu","Fri"]:
|
|||
print "El formato de la fecha del sistema no es el esperado"
|
|||
# break
|
|||
else:
|
|||
fichero=dia_semana[dia]
|
|||
return fichero
|
|||
def hora_actual(fecha):
|
|||
"""Con esta funcion se obtiene la hora actual del sistema sin los : de forma que la 08:45 se representaran
|
|||
como la 0845"""
|
|||
hora= fecha[11:13]+fecha[14:16]
|
|||
h=int(hora)
|
|||
if (h<int(0000) or h>int(2500)):
|
|||
print "El formato de la hora del sistema no es el esperado"
|
|||
# break
|
|||
else:
|
|||
return hora
|
|||
def descargar_fichero(fichero):
|
|||
"""funcion que se encarga de descargar el fichero del dia de la semana correspondiente al dia actual del
|
|||
servidor nfs y colocarlo en la ubicacion correcta en el servidor de terminales con el nombre de horario.txt"""
|
|||
file="http://servidor/wifi/"+fichero
|
|||
print file
|
|||
destino="/wifi/horario.txt"
|
|||
destino2="/wifi"
|
|||
if not os.path.exists(destino2):
|
|||
print "La ruta destino no existe y hay que crearla"
|
|||
try:
|
|||
os.makedirs(destino2)
|
|||
except OSError:
|
|||
print "Hay algun error a la hora de crear el directorio /wifi en el servidor de aula"
|
|||
urllib.urlretrieve(file, destino)
|
|||
return destino
|
|||
def devuelve_usuario():
|
|||
"""con esta funcion recogemos el usuario que esta logueado en ese momento en el ordenador, seguira intentandolo
|
|||
hasta que se loguee antes"""
|
|||
resultado = sys.argv[1]
|
|||
return resultado
|
|||
def crea_hostapd(destino,resultado,hora):
|
|||
"""con esta funcion generamos el fichero hostapd con las mac correspondientes a los alumnos a los que se
|
|||
les va a dar acceso a internet y lo colocamos en la ruta correcta."""
|
|||
if not os.path.exists(destino):
|
|||
print "Hay un error el el fichero horario.txt en el servidor de aula"
|
|||
else:
|
|||
f=open(destino,"r")
|
|||
if not os.path.exists("/etc/hostapd"):
|
|||
try:
|
|||
os.makedirs("/etc/hostapd")
|
|||
except IOError:
|
|||
print "Ha habido algun error a la hora de crear el directorio /etc/hostapd"
|
|||
# break
|
|||
if not os.access("/etc/hostapd", os.W_OK):
|
|||
print "No tiene permisos de escritura sobre el directorio /etc/hostapd"
|
|||
# break
|
|||
else:
|
|||
g=open("/etc/hostapd/hostapd.accept","w")
|
|||
while True:
|
|||
dato=f.readline()
|
|||
if not dato:
|
|||
break
|
|||
else:
|
|||
lin=dato.split("|")
|
|||
if lin[0]==resultado:
|
|||
if hora>lin[2] and hora<lin[3]:
|
|||
g.write(lin[1])
|
|||
g.write("\n")
|
|||
f.close()
|
|||
g.close()
|
|||
return g
|
|||
def reinicia_hostapd():
|
|||
resultado = os.system("invoke-rc.d hostapd restart")
|
|||
if __name__ == '__main__':
|
|||
dia_hoy=""
|
|||
hora=""
|
|||
user=""
|
|||
fich=""
|
|||
hos=""
|
|||
res=""
|
|||
f=""
|
|||
dia_hoy=dia_actual()
|
|||
hora=hora_actual(dia_hoy)
|
|||
fich=fichero_semana(dia_hoy)
|
|||
f=descargar_fichero(fich)
|
|||
user=devuelve_usuario()
|
|||
hos=crea_hostapd(f,user,hora)
|
|||
res=reinicia_hostapd()
|
|||
if hos=="":
|
|||
print "El script no ha funcionado correctamente"
|
|||
else:
|
|||
print "Todo ha ido bien"
|