2 Reaktionen

Veraltete WordPress Versionen auf dem Server via Bash-/Shell-Script finden

Geschätzte Lesedauer:

Vor einiger Zeit hatte ich schon einen Artikel dazu veröffentlicht, wie man veraltete Joomla Versionen via Bash Script findet.

Hier nun das entsprechende Script für WordPress, ohne viele Erklärungen, da das Vorgehen eigentlich genauso ist.

[pastacode lang=“bash“ message=“Shell-Script“ highlight=““ provider=“manual“]

#!/bin/bash
 
# aktuelle version
CUR=3.6
 
# ausgabe als CSV in Datei (optionaler Parameter)
OUTFILE=$1
 
vercomp () {
    if [[ $1 == $2 ]]
    then
        return 0
    fi
    local IFS=.
    local i ver1=($1) ver2=($2)
    for ((i=${#ver1[@]}; i< ${#ver2[@]}; i++)) ; do
        ver1[i]=0 ;
    done
    for ((i=0; i<${#ver1[@]}; i++)) ; do
        if [[ -z ${ver2[i]} ]] ; then
            ver2[i]=0
        fi
        if ((10#${ver1[i]} > 10#${ver2[i]})) ; then
            return 1
        fi
        if ((10#${ver1[i]} < 10#${ver2[i]}))
        then
            return 2
        fi
    done
    return 0
}
 
if [[ "$OUTFILE" != "" ]] ; then
    # CSV Ausgabedatei leeren
    echo -n "" > $OUTFILE ;
fi
 
for F in `find /var/www -wholename '**/wp-includes/version.php' | grep -v '/tmp/'` ; do
    D=`dirname $F` ;
    D=`dirname $D` ; # second time
     
    ISOK=0 ;
    SHOWNEWEST="" ;
    IMPORTANCE=0 ;
     
    VERSION=`grep -E '\\$wp_version[[:space:]]*=' $F|sed -r "s/^.*=\s*'(.*)'.*$/\1/g"` ;
    #echo "${VERSION} < ${CUR} ?" ;
    vercomp $VERSION $CUR ;
    COMP=$? ;
    #echo " $COMP" ;
    if [[ $COMP -eq 2 ]] ; then
        # version ist kleiner als aktuelle
        SHOWNEWEST="${CUR}" ;
    else
        ISOK=1 ;
        echo "[INFO] Version $VERSION in $D ist ok." ;
    fi
     
    if [[ $ISOK -eq 0 ]] ; then
        echo "[WARN] Veraltete WP Version $VERSION in $D" ;
        if [[ "$OUTFILE" != "" ]] ; then
            # CSV Datei schreiben
            echo "\"$D\";$VERSION;$SHOWNEWEST;$IMPORTANCE" >> $OUTFILE ;
        fi
    fi
done
 
exit 0 ;

[/pastacode]

Dieser Artikel wurde von Marius Burkard verfasst.

Marius Burkard ist Diplom-Wirtschaftsinformatiker und arbeitet seit 2006 als selbstständiger Software-Entwickler und Linux-Server-Administrator mit der Firma pixcept KG. Er ist unter anderem mitverantwortlich für die Projekte Was-lese-ich.de und ISPProtect.

2 Kommentare - bis jetzt!

Eigenen Kommentar verfassen
  1. PlaNet Fox
    schrieb am :

    Hi

    kann es sein das hier ein Fehler drin ist in Zeile 17 

    wordpress-check.sh: Zeile 17: Syntaxfehler beim unerwarteten Wort `('
    wordpress-check.sh: Zeile 17: `    for ((i=${#ver1[@]}; i< ${#ver2[@]}; i++)) do ver1[i]=0 done for ((i=0; i<${#ver1[@]}; i++)) do if [[ -z ${ver2[i]} ]] then # fill empty fields in ver2 with zeros ver2[i]=0 fi if ((10#${ver1[i]} > 10#${ver2[i]}))'

    Getestet unter Debian 8 

  2. Marius Burkard Verfasser des Artikels
    schrieb am :

    Hallo,

    das ist korrekt. Scheinbar hat mir WordPress hier Zeilenumbrüche rausgeworfen. Ich habe den Code nun korrigiert.

    Viele Grüße

Und jetzt du! Deine Meinung?

Erforderliche Felder sind mit einem Asterisk (*) gekennzeichnet. Die E-Mail-Adresse wird nicht veröffentlicht.
  1. Nach Absenden des Kommentar-Formulars erfolgt eine Verarbeitung der von Ihnen eingegebenen personenbezogenen Daten durch den datenschutzrechtlich Verantwortlichen zum Zweck der Bearbeitung Ihrer Anfrage auf Grundlage Ihrer durch das Absenden des Formulars erteilten Einwilligung.
    Weitere Informationen