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