Weboldal változás értesítő szkript
Újra és újra felmerülő probléma, hogy szeretnénk minél hamarabb értesülni egy weboldal módosulásáról anélkül, hogy azt folyamatosan nézegetnünk kellene. Egyetemi keretek között erre jellemző példa, mikor valamely ZH eredményének internetre kikerülését várjuk.
Némi guglizás után ugyan lehet találni erre alkalmasnak tűnő oldalakat, ugyanakkor, ha kicsit is paranoiásak vagyunk és szeretnénk elkerülni az esetleges spam áradatot, akkor nem szívesen adjuk meg mindenhol az e-mail címünket. Ráadásul a legtöbb ilyen ingyenes szolgáltatás rendelkezik limitációkkal is, mint például a megfigyelhető URL-ek száma, vagy az ellenőrzések gyakorisága.
Erre a problémára készült az alábbi kis bash script, melyet crontab-ban elhelyezve akár percenkénti ellenőrzést is végezhetünk tetszőleges számú oldal és értesítendő e-mail cím felhasználásával.
A konfigurációt jelen esetben két lista módosítása jelenti: sites és emails. Mindkét listába szóközzel elválasztva tehetünk további értékeket.
#!/bin/bash
declare -a sites=('http://cs.bme.hu/nyau'
declare -a emails=('[email protected]')
function check()
{
local URL=$1
local EMAIL=$2
local fileName="$(echo ${URL} | md5sum | head -c -4)"
local workingDirectory=$(dirname $0)
cd $workingDirectory
if [ $(curl -k -L -s --head --write-out "%{http_code}" -o /dev/null ${URL}) == "200" ]; then
curl ${URL} -k -L -s | md5sum -c --quiet ${fileName} 2>/dev/null 1>/dev/null
if [ $? != 0 ]; then
curl ${URL} -k -L -s | md5sum > ${fileName}
echo "A ${URL} tartalma megvaltozott!" | mailx -s 'Tartalom valtozas!' ${EMAIL}
fi
fi
}
total=${#sites[*]}
for (( i=0; i<=$(( $total -1 )); i++ ))
do
check "${sites[$i]}" "${emails[$i]}">
done