Скрипт, который открывает веб-страницу и записывает ее как работу cron
Мне нужно и нужно создать скрипт, который принимает адрес веб-страницы и время в секундах в качестве аргументов. Он записывает все, что отображается на веб-странице - например, JavaScript и HTML-контент (Flash не требуется). Скрипт будет запускаться не интерактивно как задание cron. Другие ограничения заключаются в том, что он не может запустить менеджер входа или взломать уже работающий X-сервер. Также нельзя предположить, что установлен менеджер входа в систему или какой графический адаптер встроен в сервер. Это полу-решение - то, что я придумал до сих пор, но оно не очень хорошо из-за Xserver и потому, что его нужно запускать как задание cron. Также он должен быть запущен на последней версии Ubuntu или Debian!
Если у вас есть другие обходные пути или предложения, просто скажите!:)
if [ $# -ne 3 ]then
echo "Arguments missing!";
echo "Entered : $0 $1 $2 $3 (out of $# vars)";
echo "Should be: $0 http://feri.uni-mb.si/ 60s i_stare_at_websites_everyday.ogv";
exit
fi
#continued...
URL=$1;
TIME=$2;
OUTFILE=$3;
echo "++ Using URL: $URL";
echo "++ Capturing browser window for $TIME seconds";
# chromium is used as a better workaround for firefox's safe mode PITA browser.jar settings unpack+set+pack bug
#firefox $1 &
chromium-browser --disable-translate --app=$URL --user-data-dir /tmp &
browserPID=$!
#sleep for 4 secodns = loading firefox + webpage loading time 2+2?
#recordmydesktop has a delay argument which doesn't work.
#we need to sleep the execution old school way.
sleep 4s
unset xC yC wC hC
eval $(xwininfo -id $(xdotool getactivewindow) |
sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/xC=\1/p" \
-e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/yC=\1/p" \
-e "s/^ \+Width: \+\([0-9]\+\).*/wC=\1/p" \
-e "s/^ \+Height: \+\([0-9]\+\).*/hC=\1/p" )
echo "Starting capture...";
recordmydesktop -x=$xC -y=$yC --width=$wC --height=$hC -o $OUTFILE 2&> /tmp/record_script_log &
# 2&> /tmp/recording_script.log &
recorderPID=$!
echo "++ Firefox Process ID: $firefoxPID, RCD ID: $recorderPID, Recording for: $TIME";
sleep $TIME
echo "++ All done! Cleaning up..."
echo "++ File saved as $OUTFILE";
# shut down "record my desktop" nicely
kill $recorderPID
kill -9 $browserPID
1 ответ
Использование wget
, Он должен быть установлен в вашей системе, потому что это зависимость от ubuntu-standard
пакет. В противном случае установите его с apt-get install wget
,