Está en: »

Autor: miguelcarmona

Query log de MySQL (general log)

En MySQL podemos habilitar un log de queries ejecutadas en el servidor llamado “general log“. Aunque no es muy recomendable tenerlo habilitado normalmente, puede resultar útil en momentos puntuales. Vamos a ver su funcionamiento:

Las variables que controlan el general log son las siguientes:

  • general_log: Indicamos si queremos habilitar o no dicho log
  • general_log_file: Indicamos el path del fichero dónde queremos el log

Mediante SHOW VARIABLES podemos verlos:

mysql> show variables like 'general_log%';
+------------------+--------------------------+
| Variable_name    | Value                    |
+------------------+--------------------------+
| general_log      | OFF                      | 
| general_log_file | /var/log/mysql/query.log | 
+------------------+--------------------------+
2 rows in set (0.00 sec)

También a partir de MySQL 5.1 tenemos que tener en cuenta el valor de “log_output“, ya que podemos indicar que en lugar de un fichero se guarde en una tabla: Continúe leyendo…

Introducción al uso de túneles SSH

Todos nos hemos encontrado en algún momento con que ese servicio al que queremos acceder está en un equipo inalcanzable desde nuestra red u otros problemas similares. Si disponemos de acceso SSH podemos solucionar fácilmente problemas de este tipo utilizando túneles SSH.

Planteamos un primer escenario, en el que tenemos un servidor de bases de datos al que podemos acceder por SSH, pero cuyo cortafuegos nos impide interactuar directamente con la base de datos (suponemos MySQL, que utiliza el puerto 3306).

Continúe leyendo…

Restringir acceso a ficheros o directorio por IP usando .htaccess

Proteger un directorio

El fichero .htaccess deberá estar colgado de él y deberá contener el siguiente código:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Mi control de acceso"
AuthType Basic

order deny,allow
deny from all
allow from xx.xx.xx.xxx

Cada IP con acceso deberá estar indicada en un nuevo allow. Podemos poner tantos allow como necesitemos.

Continúe leyendo…

Apache: No space left on device: Couldn’t create accept lock

El servidor web Apache lo he visto fallar de dos formas distintas (persistentes a reinicios) por el mismo problema de semáforos. Vamos a ver cómo solucionarlo:

En varias ocasiones he visto el siguiente error en el log:

[emerg] (28)No space left on device: Couldn't create accept lock

Continúe leyendo…

Pausar procesos (aplicaciones)

A veces, por algún motivo específico, necesitamos pausar alguna aplicación pero no cerrarla. Puede ser un caso el que hagamos una pausa en nuestra programación con nuestro flamante comedor de recursos como es eclipse o aptana y queramos ver un vídeo flash (otro glotón de recursos) con fluidez. Sería incómodo cerrar todo el IDE para luego volver a abrirlo. Pero el kernel Linux pensó en esos pequeños detalles y nos brinda ciertas posibilidades entre las que se encuentra detener, pausar o matar un proceso (o aplicación para los menos curtidos).

El caso es que podemos mandar la señal detener ( -19 ) a un determinado proceso para posteriormente poder iniciarlo de nuevo ( -18 ). Esta señal se puede mandar con el comando kill y el id de proceso o con el comando killall y el nombre de proceso. Como no me gusta dar tantas vueltas, me centraré en killall:

Continúe leyendo…

evitar desconexión por timeout en ssh

Problema: El servidor ssh al que te conectas cierra la conexión cuando detecta inactividad del usuario.

Solución:crear un fichero ~/.ssh/config con el contenido que indico a continuación.

Ese fichero se leerá cada vez que iniciemos una conexión ssh con cualquier host. Lo que indicamos es que queremos lanzar un paquete a modo de señal cada 120 segundos (2 minutos), haciendo saber que seguimos conectados y que no queremos que nos corte la conexión. Si por cualquier razón el servidor no respondiera tras 3 intentos de envío de señal (2*3 = 6 minutos), se cancelará la conexión.

Continúe leyendo…

Diferentes versiones de PHP según VirtualHost o directorio

Con los cambios de las versiones de PHP 5.3 y 5.4 puede resultar interesante mantener ciertas partes en una versión de PHP anterior y seguir otras con la última estable. Vamos a ver como instalar varios PHP en un mismo Apache.

La instalación del PHP, en este caso 5.2 deberá ser en modo CGI, simplemente deberemos preocuparnos de instalarlo con un prefix diferente y con el fichero de configuración en otro sitio:
Continúe leyendo…

Identificación de la key por el random art

Al generar una clave privada con ssh-keygen podemos ver al final una imagen asciigenerada a partir de la clave:

$ ssh-keygen -t dsa
(...)
The key's randomart image is:
+--[ DSA 1024]----+
|   oE   .        |
|  .. . o o       |
|      o + .      |
|   . o * +       |
|  o O = S        |
|   = X .         |
|    o o          |
|                 |
|                 |
+-----------------+

Continúe leyendo…

Tip: Recuperando archivos borrados, fácilmente con Foremost

Su forma más básica seria: foremost tipo_de_archivo_a_recuperar /directorio_de_búsqueda /directorio_de_salida.

Como siempre digo, es más fácil de entender como funciona con un ejemplo practico, así que vamos allá.
En este caso voy a utilizar Linux Mint 12 y un Pendrive (sdb1), que contiene una imagen jpg que borraré junto con la papelera, que es una carpeta oculta.

Continúe leyendo…

Reenviar el correo recibido a otro servidor (a la misma cuenta/dominio)

Para reenviar el correo recibido en un servidor a otro, tenemos los transportes de postfix. Estos transportes nos permiten definir que para un dominio dado (o todo el correo que se reciba) se encole a algún otro servidor. Esto es realmente útil para migraciones de cuentas otros servidores de forma que mientras actualizan las dns, estaremos recibiendo todo el correo en el nuevo servidor.

El proceso es sencillo; en el antiguo servidor, añadiremos al archivo /etc/postfix/transport Continúe leyendo…