====== HTML Screenshots mit Linux und der Kommandozeile ======
Manchmal ergibt sich die Notwendigkeit Screenshots vom HTML Seiten von der Kommandozeile aus anzufertigen.
In diese Verlegenheit kommt man, wenn man versucht die DSL Statusinformationen seiner FritzBox über einen längeren Zeitraum aufzuzeichen und zu vergleichen.
===== Scritt für Schritt =====
- Vorbedingungen: apt-get install firefox imagemagick fluxbox tightvncserver
- #!/bin/bash
#Create screenshot of html site
#param $1: Url to take screenshot from
#param $2: Filename of output jpg (date is appended)
function makeHtmlScreenshot() {
display=11
url=$1
outfile=$2
export DISPLAY=:$display
#Start X-Server
vncserver :$display -geometry 1024x1024
#Start browser
firefox --display=:$display "${url}" &
#Wait for page to be loaded
#Get Window id (with timeout)
declare -i cnt
cnt=0
winid=""
while [ "${winid}" == "" ]; do
winid=`xwininfo -tree -root | grep 1024x975 | awk '{print $1}' | head -1`
sleep 2s
cnt=$cnt+1
if [ $cnt -gt 20 ]; then
echo "Failed to get windowid!";
exit 2
fi
done
#Get screenshot
import -window ${winid} ${outfile}_`date +%Y-%m-%d_%H-%M-%S`.jpg
#Kill everything
vncserver -kill :$display
}
Anmerkungen:
* Die Framegröße, nach der bei xwininfo gegrept wird wurde empirisch ermittelt und hägt natürlich mit dem geometry Parameter von vncserver zusammen (vorrausgesetzt man betreibt Firefox auch maximiert).