Revisión 51
Añadido por jredrejo hace alrededor de 14 años
configura_hostapd.py | ||
---|---|---|
import errno
|
||
import sys
|
||
import re
|
||
from parsehostapd import parsehostapd
|
||
import socket
|
||
import logging
|
||
|
||
#Expresiones regulares
|
||
|
||
LOG_FILENAME= "/var/log/configura-hostapd.log"
|
||
fecha=[]
|
||
ip=[]
|
||
dia_semana={"Mon":"lunes.txt","Tue":"martes.txt","Wed":"miercoles.txt","Thu":"jueves.txt","Fri":"viernes.txt"}
|
||
... | ... | |
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
|
||
if dia not in ["Mon","Tue","Wed","Thu","Fri"]:
|
||
logging.getLogger().error("El formato de la fecha del sistema no es el esperado")
|
||
return ""
|
||
else:
|
||
fichero=dia_semana[dia]
|
||
return fichero
|
||
... | ... | |
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
|
||
logging.getLogger().error("El formato de la hora del sistema no es el esperado")
|
||
return "9999"
|
||
else:
|
||
return hora
|
||
|
||
... | ... | |
destino="/wifi/horario.txt"
|
||
destino2="/wifi"
|
||
if not os.path.exists(destino2):
|
||
print "La ruta destino no existe y hay que crearla"
|
||
logging.getLogger().debug("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)
|
||
logging.getLogger().error("Hay algun error a la hora de crear el directorio /wifi en el servidor de aula")
|
||
try:
|
||
urllib.urlretrieve(file, destino)
|
||
except:
|
||
logging.getLogger().error("No hay acceso al servidor para encontrar el fichero de horario")
|
||
return ""
|
||
return destino
|
||
|
||
|
||
... | ... | |
"""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"
|
||
logging.getLogger().error("Hay un error el el fichero horario.txt en el servidor de aula")
|
||
return ""
|
||
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
|
||
logging.getLogger().error("Ha habido algun error a la hora de crear el directorio /etc/hostapd")
|
||
return ""
|
||
if not os.access("/etc/hostapd", os.W_OK):
|
||
print "No tiene permisos de escritura sobre el directorio /etc/hostapd"
|
||
# break
|
||
logging.getLogger().error("No tiene permisos de escritura sobre el directorio /etc/hostapd")
|
||
return ""
|
||
else:
|
||
g=open("/etc/hostapd/hostapd.accept","w")
|
||
while True:
|
||
... | ... | |
|
||
|
||
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"
|
||
logging.basicConfig(level=logging.DEBUG,
|
||
format='%(asctime)s %(levelname)-8s %(message)s',
|
||
datefmt='%a, %d %b %Y %H:%M:%S',
|
||
filename=LOG_FILENAME)
|
||
|
||
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)
|
||
if f!="":
|
||
user=devuelve_usuario()
|
||
hos=crea_hostapd(f,user,hora)
|
||
|
||
if hos=="":
|
||
logging.getLogger().error("Error al generar las mac autorizadas")
|
||
|
||
|
||
#Aquí metemos ahora la reconfiguración de hostapd.conf con la parte
|
||
#hecha por Francisco Mora
|
||
hostapdconf="/etc/hostapd/hostapd.conf"
|
||
|
||
canaloptimo = parsehostapd.selectbestchannel(True)
|
||
|
||
ssid = socket.gethostname()
|
||
pos = ssid.find(".")
|
||
if pos > -1:
|
||
ssid = ssid[:pos]
|
||
pos = ssid.find("-pro")
|
||
if pos > -1:
|
||
ssid = ssid[:pos]
|
||
try:
|
||
#Abre el archivo para lectura de datos
|
||
archivoLectura = open(hostapdconf,"r")
|
||
lineas = archivoLectura.readlines()
|
||
archivoLectura.close()
|
||
except (RuntimeError, TypeError, NameError, IOError):
|
||
logging.getLogger().error("Error en la ubicacion o nombre del archivo")
|
||
sys.exit(0) #salimos con 0 para no fastidiar gdm
|
||
#Modifica la cadena del channel y ssid
|
||
encontradoChannel = False
|
||
encontradoSsid = False
|
||
for numlinea in range(0, len(lineas)):
|
||
linea = lineas[numlinea]
|
||
#comprobamos si estamos en channel o en ssid
|
||
if linea[:7] == "channel":
|
||
encontradoChannel = True
|
||
lineas[numlinea] = "channel="+str(canaloptimo)+"\n"
|
||
if linea[:4] == "ssid":
|
||
encontradoSsid = True
|
||
lineas[numlinea] = "ssid="+ssid+"\n"
|
||
if not encontradoChannel:
|
||
lineas.append("channel="+str(canaloptimo)+"\n")
|
||
if not encontradoSsid:
|
||
lineas.append("ssid="+ssid+"\n")
|
||
|
||
#Abre el archivo para escritura de datos
|
||
archivoEscritura = open(hostapdconf,"w")
|
||
archivoEscritura.writelines(lineas)
|
||
archivoEscritura.close()
|
||
logging.getLogger().debug('Establecido el canal %s con ESSID' % (canaloptimo,ssid))
|
||
|
||
|
||
|
||
res=reinicia_hostapd()
|
||
|
Exportar a: Unified diff
Añadido logueo de errores y convertido código de Paco Mora en Módulo de Python