Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo evitar que xss-lock bloquee la pantalla cuando una aplicación está a pantalla completa

Imago voragine.net
• Por

xss-lock es un programa que gestiona el bloqueo de pantalla cuando el equipo está inactivo. xss-lock cumple esta tarea llamando a un bloqueador de pantalla externo, y comunicándose con el login manager que define el tiempo de inactividad antes de bloquear la pantalla y conecta con la sesión para salir del bloqueo.

Yo uso xss-lock para gestionar el bloqueo de pantalla en i3wm. xss-lock funciona estupendamente sin mucha configuración excepto cuando hay una aplicación a pantalla completa. En este caso bloquea la pantalla considerando que hay inactividad. Esto es especialmente molesto cuando estoy viendo una película: cada 5 minutos tengo que mover el ratón o se activa el bloqueo.

Para evitarlo he añadido un pequeño script de bash que monitoriza con wmctrl si hay alguna aplicación corriendo a pantalla completa. Si es así, pausa xss-lock con pkill. Cuando se sale del modo pantalla completa, el script reactiva xss-lock.

Cómo convertir archivos .eps a .svg desde la línea de comandos con Inkscape

Imago voragine.net
• Por

Inkscape se puede utilizar en modo no interactivo desde la línea de comandos. Esta funcionalidad es muy útil para automatizar tareas como el cambio de formato de un grupo de imágenes.

Para generar un archivo .svg a partir de un .eps se puede invocar inkscape de la siguiente manera:

inkscape -o archivo.svg archivo.eps

Para aplicar este comando a un grupo de archivos .eps que están en la misma ubicación se puede usar un loop de bash:

for i in *.eps; do inkscape -o $i.svg $i; done

Cómo obtener el propietario de una carpeta o archivo en Bash para usarlo en un script

Para obtener el propietario de un archivo o carpeta en Linux se puede usar el comando stat, y de la siguiente manera se puede almacenar en una variable y usarlo cuando se quiera dentro de un script de bash:

owner=${stat -c '%U' /path/to/your/file}

Y para obtener de manera análoga el grupo de una carpeta o un archivo:

group=${stat -c '%G' /path/to/your/file}

Visto en el blog de Mattias Geniar.

Script para monitorizar y reiniciar automáticamente el servidor de base de datos mysql en caso de fallo

Imago voragine.net
• Por
Hay programas que permiten monitorizar todo un sistema y reiniciar los servicios que se paran o fallan de manera inesperada, todo esto automáticamente. Es el caso de monit, un programa que se ejecuta en segundo plano (daemon) eficaz y que no consume muchos recursos. Sin embargo hay veces que es más rápido y ligero hacer un pequeño script de bash y ejecutarlo periódicamente con cron. Esto es exactamente lo que he hecho para monitorizar el servidor de base de datos de uno de mis servidores web y reiniciarlo en caso de que se pare.

Cómo configurar el autocompletado para git en su versión línea de comandos, en Linux claro

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Personalmente uso git desde la línea de comandos. Me resulta lo más rápido: me basta dejar vim en segundo plano y commitear; también lo más ligero ya que no tengo que tener otro programa GUI abierto para git.

Para que el uso de git en línea de comandos sea aún más ágil es fundamental activar el autocompletado de comandos de git.

Para ello basta bajarse el script de bash que añade esta función al paquete básico de git, alojarlo en nuestro directorio personal o donde se quiera, y añadir la siguiente línea al archivo .bashrc ubicado en nuestra carpeta personal:

source ~/.git-completion.bash

La línea anterior añade el script de autocompletado a la configuración de bash del usuario. La ruta hasta el archivo descargado tiene que ser correcta. En el ejemplo anterior hemos guardado el script como oculto en la carpeta personal del usuario.

Cómo interactuar con el servidor de base de datos sql mediante comandos, desde un script de bash

Imago voragine.net
• Por
Aunque generalmente nos comuniquemos con el servidor de base de datos SQL mediante PHP u otro lenguaje para generar una salida HTML, hay veces que es muy útil hacerlo usando un script de bash. Por ejemplo cuando queremos automatizar en nuestro servidor la creación de bases de datos, o ejecutar una búsqueda con reemplazo (search and replace) de un registro completo o de un cadena concreta. Para ejecutar consultas al servidor SQL en modo no interactivo, cosa que necesitamos para hacerlo desde un script, debemos acompañar la orden mysql con el modificador -e, al que daremos como valor la consulta en cuestión.

Usando bash y cron para automatizar la copia de seguridad de una base de datos

Imago voragine.net
[actualizado el ] • Por
Este post explica cómo programar un pequeño script en bash que hace copia de seguridad de una base de datos usando mysqldump, y envía el archivo sql generado a una dirección de correo usando el cliente de línea de comandos mutt. Así que hay que tener instalados estos dos paquetes en la máquina donde se vaya a hacer correr el script. El script se ejecutará con la frecuencia deseada usando cron.

Cómo ejecutar PHP periódicamente con cron en un servidor Linux

Imago voragine.net
[actualizado el ] • Por
Primero tenemos que tener la posibilidad de ejecutar un script PHP desde la línea de comandos, o en su defecto ejecutarlo con curl; en este tutorial lo haremos ejecutando el PHP directamente en la línea de comandos sin curl. Luego tenemos que generar el archivo PHP, y un script sh que ejecute el script PHP. Por último, configuraremos cron para que ejecute el script de bash con la periodicidad que necesitemos.

Cómo transformar la codificación de un archivo con vim

Imago voragine.net
[actualizado el ] • Por
Muchas veces la codificación de un archivo nos está volviendo locos, porque hace que no funcione algún script, y es lo último que se nos ocurre comprobar. A mí me pasa, por ejemplo, cuando hago un script en bash utilizando algún archivo que me ha pasado alguien que usa Windows, y por tanto viene con una codificación ISO-8859 en vez de UTF-8. Para evitar sorpresas, lo mejor es comprobar al principio la codificación y en caso de no ser UTF-8 cambiarla.