WordPress-Version prüfen mit Python

Wer professionell Webdienste administriert, betreibt üblicherweise auch ein Monitoring. Damit werden verschiedene Faktoren des Dienstes hinsichtlich der Geschwindigkeit und Verfügbarkeit gemessen und bei Abweichungen entsprechend alamiert. Bei größeren Umgebungen bereiten jedoch auch veraltete Software-Stände Probleme und stellen ein Sicherheitsrisiko dar.

Wer WordPress-Installationen betreibt, kann diesem Problem auch mit einem entsprechenden Skript begegnen. Die WordPress-Version einer Webseite lässt sich üblicherweise aus dem Quelltext der Startseite auslesen. Über eine API stellt der Hersteller zudem Informationen zu der jeweils aktuellen Version bereit. Im folgenden stellen wir ein Beispiel-Skript zur Verfügung, welches die WordPress-Version einer Webseite abfragt und mit der aktuellen Versionsnummer vergleicht.

Dass Skript erfordert neben Python 3 auch die Module “Requests” und “BeautifulSoup”.
Am einfachsten können diese über PIP installiert werden:


pip install --upgrade requests
pip install --upgrade bs4

Das Skript:


# make sure to install the required libraries first:
# pip install --upgrade requests
# pip install --upgrade bs4

__author__ = "Lutz Schildmann, Audeca GmbH"

import json # for parsing the response of the wordpress version check
from bs4 import BeautifulSoup # a great HTML parser
import requests # for making HTTP requests

# get latest wordpress version number
def get_latest_wordpress_version():
    latest_version = None
    try:
        response = requests.get('https://api.wordpress.org/core/version-check/1.7/')
        json_data = json.loads(response.text)
        latest_version = json_data['offers'][0]['current']
    except:
        print('Error: Unable to get the wordpress version information')
        pass
    return latest_version

# get the wordpress version of a website
def get_current_wordpress_version(url):
    current_version = None
    try:
        response = requests.get(url)
        content = response.text
        soup = BeautifulSoup(content, 'html.parser')
        tag = soup.find(attrs={"name": "generator"})
        current_version = tag.get('content')
        # get rid of the extra garbage
        current_version = current_version.lower().replace('wordpress ','').strip()
    except IndexError:
        print('No generator information found on site %s' % url)
        pass
    return current_version

# DEMO
if '__main__' == __name__:
    url = 'http://demo.audeca.de/'
    
    latest_version = get_latest_wordpress_version()
    current_version = get_current_wordpress_version(url)
    
    if (latest_version and current_version):
        print('Latest wordpress version: %s' % latest_version)
        print('Current wordpress version: %s' % current_version)
    
        if (current_version == latest_version):
            print('Your wordpress is up to date')
        else:
            print('You wordpress is NOT up to date!')

Wir unterstützen Sie bei der Digitalisierung. Gerne beraten und unterstützen wir Sie in Bezug auf die Aktualisierung Ihrer IT-Umgebung und erstellen Ihnen ein individuelles Konzept oder Angebot. Kontaktieren Sie uns!