Photos récentes


Catégories

Pages

Brèves

Liens

Ce site…

Mots-clés

Archives

Surveiller les mises à jour de WordPress

January 2nd, 2013 at 5:51 pm by nono

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. 🙂

 

Tags: ,
Posted in geekeries


 




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>