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

  1. Vorbedingungen:
    apt-get install firefox imagemagick fluxbox tightvncserver
  2. #!/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: