Surveiller les mises à jour de WordPress
January 2, 2013 by nonoCatégories geekeries - Mots-clés Nagios wordpress
J'administre des serveurs qui hébergent un certain nombre de sites web sous WordPress. Comme tout WordPress qui se respecte, ceux-ci ne sont généralement pas à jour, sinon on risquerait d'avoir un minimum de sécurité, ce qui, convenez-en, ne serait pas très drôle.
J'ai donc bricolé une sonde Nagios rudimentaire pour me tenir au courant. Elle est en deux parties : un bout de script sur le serveur web, et la sonde elle-même sur le serveur de supervision.
Côté WordPress, donc, un petit script PHP qui se contente de retourner la version de WordPress installée avec un minimum de contrôle d'accès :
<?php // Generated by /usr/local/sbin/new-wordpress // FIXME: Should probably not be hardcoded. if (preg_match('/^(129\.102\.6\.|2001:660:3004:6:)/', $_SERVER['REMOTE_ADDR'])) { require_once('./wp-includes/version.php'); print($wp_version); exit; } else { print('Circulez, rien a voir.'); exit; } ?>
Bien entendu, vous remplacerez là-dedans mes adresses IP par les vôtres, sinon ça ne vous servira pas à grand chose.
L'intelligence (très modérée) se trouve côté Nagios :
#!/bin/bash # # Arnaud Gomes 2011 curl="/usr/bin/curl" # Wordpress API URL for determining latest version. apiurl="http://api.wordpress.org/core/version-check/1.1/" ok () { echo "WORDPRESS OK - $*" exit 0 } warning () { echo "WORDPRESS WARNING - $*" exit 1 } critical () { echo "WORDPRESS CRITICAL - $*" exit 2 } unknown () { echo "WORDPRESS UNKNOWN - $*" exit 3 } [ -x "$curl" ] || unknown "No CURL at $curl." [ $# -eq 1 ] || unknown "Usage: $0 URL" url="$1" latest=$($curl -s "$apiurl" | tail -n1) echo "$latest" | egrep -q '^[0-9.]+$' || unknown "Could not determine latest version." installed=$($curl -s "$url/ircam-wp-version.php") echo "$installed" | egrep -q '^[0-9.]+$' || critical "Could not determine installed version." [ "$installed" = "$latest" ] && ok "Version $installed installed." warning "Version $installed installed, should be $latest."
Et voilà, maintenant mes WordPress ne sont pas plus à jour mais je sais quand je dois râler. :-)