URLs einer Website testen

19. Aug 2018
In: tech Tags: devops

Resourcen einer Website auf der Console prüfen

Aktuell hatte ich ein Problem mit einem Webprojekt. Einige Website-Resouren wurden sporadisch, ohne erkennbares Muster, nicht geladen. Um ein eventuelles Muster (oder eben nicht) zu erkennen, musste ein paar Hilfsmittel her.

Inventar erstellen

Zuerst musste eine Url-Liste erstellt werden, mit allen zu prüfenden Resourcen. Dafür kommt wget zum Einsatz. Mit folgendem Befehlt lassen sich alle Urls von einer Hauptseite ermitteln:

wget --spider --force-html -r -l1 https://blog.networkchallenge.de 2>output.log

Das Output dieses Vorgangs verarbeiten wir nun weiter (es enthält viel mehr als die gesuchten URLs), um die finale Url-Liste zu erzeugen:

cat output.log | grep '^--' | awk '{ print $3 }' > urllist

Prüfen mittels cURL

Bei meiner Recherche bin ich auf ein Gist gestoßen. Nach minimaler Ergänzung um Zeitstempel und dynamischer Url-Liste kam nun folgendes heraus (gespeichert als curl_all.sh):

#!/bin/bash
while read LINE; do
  echo -n "$(date +%H:%M:%S) "
  curl -o /dev/null --silent --progress-bar --head --write-out '%{http_code} %{time_starttransfer} %{url_effective}\n' "$LINE"
done < $1

Dauertest aller URLs

Nun haben wir alles zusammen, um kontinuierlich die URLs zu prüfen und Fehler beim Laden zu erkennen. Das erstellte Skript curl_all.sh arbeitet die Liste nur einmal ab. Für einen Dauertest rufen wir das Skript nun in einer Schleife auf:

while true; do ./curl_all.sh urllist_test; done > load_test.log

Das load_test.log wird nun mit Prüfergebnissen gefüllt und wir können es gezielt (parallel und am Ende) nach HTTP-Status-Codes prüfen, die nicht mit 2 (200 - OK) beginnen:

tail -f load_test.log | grep "^..:..:.. [^2]"

Gist

Alles herunterladbar als Gist:


comments powered by Disqus