Actualizar todos los Salt-Keys

WordPress incluye, por seguridad, una serie de claves únicas y aleatorias para mejorar la seguridad de acceso al sistema, las llamadas «Salt Keys».

Se encuentran en el fichero WP-Config y se parecen a algo tal que esto:

define( 'AUTH_KEY', 'Em7t5e2Zq4GgaCff9d3AqtbDHJb4swf6JxAk' );
define( 'SECURE_AUTH_KEY', 'Ct4BtVLmvm2g8cQaBXSTZMz2CX65Uz5SuQNp' );
define( 'LOGGED_IN_KEY', '8qqZZDuBmAGUtVhRM4RkrdhhjGU9jhPFegRg' );
define( 'NONCE_KEY', 'x7B45gtBKjy2GN78PVnxKNQ6ntb579rBQDbX' );
define( 'AUTH_SALT', 'nUu8hgUtAGe8UQxXQzDmfhA42mZzNE6m6NFa' );
define( 'SECURE_AUTH_SALT', '2T4XD65j3Kx2JJcV3NCS3u5RjYNGmv9F5fPt' );
define( 'LOGGED_IN_SALT', 'xvXU9PMZEvMnTc3fe2XjY7wx7XBhAwE9AyZj' );
define( 'NONCE_SALT', 'zy2jyzwQUVq8fXeX5qsFZupNgfep9ptr8j6z' );

En cualquier caso, siempre tenemos la herramienta / API para generarlo.

Pero ¿qué ocurre si has de cambiar las claves de todos tus sitios WordPress por algún tipo de cambio de seguridad? Puedes hacerlo de la siguiente manera.

Lo primero que definiremos es a partir de qué carpeta ha de buscar en todo el sistema. En este caso va a ser en /webs/:

#####
HOST_PATH="/webs/"
#####

Actualizaremos WP-CLI:

# PONIENDO AL DIA WP-CLI

echo ""
echo "Actualizando WP-CLI a la última versión:"
wp cli check-update --quiet
wp cli update --quiet
wp cli version

Y, si no está disponible, instalará la extensión de FIND.

# INSTALANDO WP-CLI FIND

echo ""
echo "Revisando el buscador de WP-CLI:"
if [ `wp package list --fields=name --format=csv | grep 'wp-cli/find-command'` ]
then
  echo "Buscador de WP-CLI instalado."
else
  echo "Instalando buscador de WP-CLI:"
  wp package install wp-cli/find-command --quiet
  if [ -z wp package list --fields=name --format=csv | grep 'wp-cli/find-command' ]
  then
  echo "Buscador de WP-CLI instalado."
  else
    echo "Se ha producido un error. No se ha podido instalar el buscador de WP-CLI."
    echo "Prueba a instalarlo manualmente."
    echo ""
    echo "wp package install wp-cli/find-command"
    echo ""
    exit 1
  fi
fi

Una vez esté, buscaremos todos los sitios del sistema:

# BUSCANDO SITIOS

echo ""
echo "Buscando sitios WordPress:"

WP_DATA=`wp find $HOST_PATH --format=csv --fields=wp_path,version | awk FNR-1`
WP_TOTAL=`echo "$WP_DATA" | wc -l`

echo "Se ha encontrado un total de ${WP_TOTAL} WordPress".

Y actualizaremos sus Salt-Keys:

  echo ""
  echo "Actualizando Salt-Keys"
  echo ""

  WP_SALTS=`wp config shuffle-salts --force --path="${WP_PATH}"`

  echo "- Estado: ${WP_SALTS}"

Y, el código completo:

#!/bin/bash

#####
HOST_PATH="/webs/"
#####

# PONIENDO AL DIA WP-CLI

echo ""
echo "Actualizando WP-CLI a la última versión:"
wp cli check-update --quiet
wp cli update --quiet
wp cli version

# INSTALANDO WP-CLI FIND

echo ""
echo "Revisando el buscador de WP-CLI:"
if [ `wp package list --fields=name --format=csv | grep 'wp-cli/find-command'` ]
then
  echo "Buscador de WP-CLI instalado."
else
  echo "Instalando buscador de WP-CLI:"
  wp package install wp-cli/find-command --quiet
  if [ -z wp package list --fields=name --format=csv | grep 'wp-cli/find-command' ]
  then
  echo "Buscador de WP-CLI instalado."
  else
    echo "Se ha producido un error. No se ha podido instalar el buscador de WP-CLI."
    echo "Prueba a instalarlo manualmente."
    echo ""
    echo "wp package install wp-cli/find-command"
    echo ""
    exit 1
  fi
fi

# BUSCANDO SITIOS

echo ""
echo "Buscando sitios WordPress:"

WP_DATA=`wp find $HOST_PATH --format=csv --fields=wp_path,version | awk FNR-1`
WP_TOTAL=`echo "$WP_DATA" | wc -l`

echo "Se ha encontrado un total de ${WP_TOTAL} WordPress".

for WP_D in $WP_DATA
do
  echo ""
  echo "********************************************************************************"
  echo ""
  echo "WordPress"
  echo ""

  WP_PATH=`echo "$WP_D" | awk -F, 'NR { print $1 }'`
  echo "- Ruta: ${WP_PATH}"

  echo ""
  echo "Actualizando Salt-Keys"
  echo ""

  WP_SALTS=`wp config shuffle-salts --force --path="${WP_PATH}"`

  echo "- Estado: ${WP_SALTS}"

  echo ""
  echo "********************************************************************************"

done

echo ""
echo " -- FIN --"
echo ""
echo ""

Este código ha sido creado por:

Javier Casares

Sitio personal: Javier Casares
Sitio profesional: WPSysAdmin