Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 51

Añadido por jredrejo hace alrededor de 14 años

Añadido logueo de errores y convertido código de Paco Mora en Módulo de Python

Ver diferencias:

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