################################# ## xffhandler.sh #!/bin/bash SLEEP_INT=10 CASE "$1" in start) DISPLAY=:2.0 export DISPLAY IF [[ "$(top -bn1 | grep Xvfb)" == "" ]]; THEN echo "Starting Xvfb (and waiting $SLEEP_INT secs)..." #Xvfb :2 -SCREEN 0 1024x1400x24 >/dev/null 2>&1 & Xvfb :2 -SCREEN 0 1024x2000x24 >/dev/null 2>&1 & WHILE [[ "$(top -bn1 | grep Xvfb)" == "" ]]; DO SLEEP $SLEEP_INT; done ELSE echo "Xvfb ALREADY LOADED" fi IF [[ "$(top -bn1 | grep firefox-bin)" == "" ]]; THEN echo "Starting firefox (and waiting $SLEEP_INT secs)..." firefox >/dev/null 2>&1 & SLEEP $SLEEP_INT; WHILE [[ "$(top -bn1 | grep firefox-bin)" == "" ]]; DO SLEEP $SLEEP_INT; done ELSE echo "firefox ALREADY LOADED" fi ;; STOP) echo "Stopping firefox/Xvfb..." IF [[ "$(top -bn1 | grep firefox-bin)" != "" ]]; THEN killall firefox-bin echo " firefox has been killed" ELSE echo " firefox NOT LOADED" fi IF [[ "$(top -bn1 | grep Xvfb)" != "" ]]; THEN killall Xvfb echo " Xvfb has been killed" ELSE echo " Xvfb NOT LOADED" fi ;; status) IF [[ "$(top -bn1 | grep Xvfb)" != "" ]]; THEN echo "Xvfb is running" ELSE echo "Xvfb NOT running" fi IF [[ "$(top -bn1 | grep firefox-bin)" != "" ]]; THEN echo "Firefox is running" ELSE echo "Firefox is NOT running" fi ;; esac EXIT 0 ################################# ################################# ## ffcapture.sh #!/bin/bash URL=$1 FILE=$2 CPU_LIMIT=15 SLEEP_INT=15 DISPLAY=:2.0 echo "performing a screen capture on:" echo " $URL" echo " and saving result to: $FILE" /path/TO/XFFhandler.sh start export DISPLAY firefox -remote "openurl($URL,new-window)" SLEEP $SLEEP_INT echo " waiting for page to load (pid's cpu usage < $CPU_LIMIT)" WHILE [[ "$(top -bn1 | grep firefox-bin | awk '{print $9}')" > "$CPU_LIMIT" ]]; DO echo " sleeping for $SLEEP_INT secs..."; SLEEP $SLEEP_INT; done xwd -root -silent | convert - $FILE ## WAIT UNTIL page IS loaded echo "success! ...i think :)"; /path/TO/XFFhandler.sh STOP EXIT 0 #################################