Muchas veces cuando instalas en un servidor algún plugin o algún cms, como prestashop, te crean permisos de lectura, escritura y ejecución que no son los más adecuados para la seguridad del servidor. Personalmente me molesta especialmente encontrarme con directorios y ficheros con 777.

Modificar a mano una cantidad muy grande de ficheros y directorios puede requerir mucho tiempo así que he preparado un pequeño script en python que hace esas modificaciones por mi. Sólo hay que cambiar el string ruta_a_explorar por el path y el sólo modifica los ficheros y directorios dejando los permisos 644 para los ficheros y 755 para los directorios.

Espero que os sea útil.

#! /usr/bin/env python
# -*- coding: utf-8-*-
import os, sys, stat
 
 
ruta_a_explorar="/ruta/a/explorar/"
 
for root,dirs,files in os.walk(ruta_a_explorar):
        for file in [f for f in files]:
                pp=os.path.join(root, file).replace("""\\""",'/')
                if stat.S_ISDIR(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRWXU|stat.S_IWUSR|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH)
                elif stat.S_ISREG(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IROTH)
 
        for dir in [f for f in dirs]:
                pp=os.path.join(root, dir).replace("""\\""",'/')
                print pp
                if stat.S_ISDIR(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRWXU|stat.S_IWUSR|stat.S_IRGRP|stat.S_IXGRP|stat.S_IROTH|stat.S_IXOTH)
                elif stat.S_ISREG(os.stat(pp)[stat.ST_MODE]):
                        os.chmod(pp,stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IROTH)

Una forma sencilla de comprobar si un servicio del servidor está caído y hacer que se vuelva a levantar con Python.

En este caso es para comprobar si el apache está funcionando y si no lo está iniciar el servicio.

#! /usr/bin/env python
# -*- coding: utf-8 -*-
import socket, subprocess
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip="127.0.0.1"
port="80"
try:
	s.connect((ip, int(port)))
	s.shutdown(2)
except:
	subprocess.call(['/etc/init.d/apache2', 'start'])

Lo ideal sería tener este script ejecutándose en el cron cada poco tiempo.

Últimamente tengo muy descuidado este blog y ya va siendo hora de ponerlo al día.

Empezaré con un poco de programación. Muchos de vosotros sabeis que tengo especial predilección por python como lenguaje de programación y que lo utilizo para casi de todo. Hoy he visto un artículo que me ha gustado mucho en la revista o3magazine , trata sobre turbogears y está escrito por su creador, Kevin Dangoor .

Empieza por cosas tan básicas como por dar una visión general de python con algunos ejemplos de como se programa en este lenguaje o del modelo vista-controlador que utiliza este framework. En general es un artículo muy recomendable por que te permite tener una visión global de turbogears contada dpor alguien que lo conoce a fondo.

Después de leerlo creo que voy a darle una oportunidad a turbogears en un proyecto que próximamente voy a iniciar.