Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo cambiar el nombre de usuario (username) en WordPress usando wp-cli

El nombre de usuario en WordPress está protegido por diseño, de manera que no se puede cambiar desde el panel de administración ni usando las funciones PHP para actualizar los datos de un usuario. La orden wp user update de WP-CLI tampoco permite cambiar el username. Esta protección tiene su lógica, pero hay veces que necesitamos cambiar algún username. Una manera de hacerlo es modificándolo directamente en base de datos.

Con WP-CLI podemos lanzar una query a la base de datos para cambiar el username:

wp db query "UPDATE wp_users u, 
    ( SELECT 
          COUNT(*) as number_of_same_login_users
          FROM wp_users u 
          WHERE user_login = 'mary_new' 
    ) tmp 
    SET u.user_login = 'mary_new' 
    WHERE 
            u.user_login = 'mary_old' 
        AND tmp.number_of_same_login_users = 0"

En una línea:

wp db query "UPDATE wp_users u, ( SELECT COUNT(*) as number_of_same_login_users FROM wp_users WHERE user_login = 'mary_new' ) tmp SET u.user_login = 'mary_new' WHERE u.user_login = 'mary_old' AND tmp.number_of_same_login_users = 0"

Visto en este hilo de wordpress.stackexchange.com.

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.

Borrar masivamente entradas u otros contenidos en WordPress con wp-cli

Recientemente he sufrido ataques en algunas webs gestionadas con WordPress. Una de las consecuencias es que cientos de artículos sobre casinos en línea y juegos de azar son creados. Borrar estos contenidos desde el panel de administración puede llevar un buen rato. Con wp-cli se puede hacer con un comando.

Normalmente estas infecciones crean los contenidos automáticamente y de una vez, así que la fecha es la misma para todos los contenidos. Podemos por tanto obtener un listado de entradas filtrado por fecha y luego borrarlas. Algo así:

wp post delete $(wp post list --year=2022 --month=06 --day=01 --format=ids) --force

Cómo usar entornos virtuales en Python en un sistema Linux Debian y no morir en el intento

Imago voragine.net
[actualizado el ] • Por
TLDR: Lo que hace confuso el uso de entornos virtuales es el jaleo de versiones de python que conviven en un sistema, no los entornos en sí que conceptualmente son muy sencillos. Las herramientas para gestionar entornos virtuales son módulos de python en su mayoría. Para evitar que python se líe como un ovillo mal enrollado y evitar pasar un día desenredándolo a mí me funcionan tres reglas: no instalar módulos usando sudo, instalar módulos usando pip y no apt (a excepción de python-env), usar python -m pip en lugar de pip.

Actualizar la sintaxis de los archivos de configuración de Conky

Imago voragine.net
• Por

Hace unos días actualicé mi Debian y todos mis scripts de Conky dejaron de funcionar. Tras una búsqueda rápida supe que Conky adoptó la sintaxis de Lua para sus archivos de configuración. En la versión 1.11.6, compilada en agosto de 2020, parece que la antigua sintaxis ha dejado de estar soportada.

A partir de la versión 1.10 Conky viene con un script que convierte automáticamente la sintaxis obsoleta a la sintaxis de Lua. Se puede encontrar el script en /usr/share/doc/conky-all/convert.lua.

Git: hacer un merge a master sobrescribiendo archivos si es necesario

Imago voragine.net
• Por
Una manera rápida de hacer un merge a la rama master de un repositorio git resolviendo los conflictos automáticamente. Con el siguiente método lo único que hay que decidir es si prevalece la rama que se fusiona o la rama master. Para ello usamos el parámetro -X con el valor ours si se debe dar prioridad a la rama master o theirs si se debe dar prioridad a la rama que se fusiona en master.

Maneras de vaciar y borrar un enorme archivo de varios gigabytes en Linux

Imago voragine.net
• Por

Hay veces que un archivo es tan grande que un sistema Linux no permite borrarlo con el procedimiento habitual: usando el comando rm. En una pequeña receta en Tecmin cuentan varias estrategias para vaciar un archivo y así poder borrarlo después.

Un caso típico es encontrarse con un log --un archivo de registro de actividad-- de varios gigabytes, por ejemplo, el registro de acceso del servidor web, que típicamente se llama access.log.

Usando submodules en git

Imago voragine.net
• Por

Los submodules de git permiten incluir un repositorio en otro en cualquier ubicación. Incluir por ejemplo una librería de javascript en un proyecto web como un módulo permite funcionar con su última versión fácilmente, sin necesidad de preocuparse por sustituir versiones manualmente: basta actualizar el repositorio.

Yo he usado los módulos de git por primera vez para hacer una web con Hugo. En el repositorio del sitio web he incluido el theme Learn de Hugo como módulo.

Entorno de desarrollo para R RStudio y RStudio server en Debian

Imago voragine.net
• Por

RStudio es el entorno de desarrollo más extendido para programar con R. Me cuesta usar un entorno de desarrollo que no sea vim pero parece ser que en el caso de R merece la pena, así que lo he instalado en mi Debian Buster.

He aprovechado para instalar y probar RStudio Server, así que en este pequeño manual lo cuento también, y cómo hacer las configuraciones básicas. RStudio Server permite usar RStudio desde cualquier máquina cliente a través de un navegador.

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.