ITK märguandja
Sissejuhatus
See artikkel on kirjutatud selleks, et näidata kuidas ÕIS'is toimunud muudatustest võimalikult kiirelt e-maili teel teada saada. Antud näide on tehtud hinnetelehe jaoks, kuid peale väikest muutmist sobib ka sooritustelehe jaoks ;) Tehtud sai ta rohkem enda jaoks, kuid mõtlesin ka koolikaaslastega jagada, kategooriaks Linux, sest tegu pole ühegi õppeaine kodutööga. Kuna pole Pythoniga nii sina peal, siis on põhiosa siiski Bashis. Eks igaüks teab kas tahab teha oma elu mugavamaks või mitte.
Kiire ülevaade sellest, mida need skriptid teevad:
- script.sh logib ÕISi sisse ning salvestab küpsised faili cookies.txt
- script.sh laeb värskete küpsiste abil alla "Minu hinded" lehe
- md5sum.py arvutab vastavalt sisule unikaalse md5 räsi ning võrdleb seda juba olemas olevaga (hinded.html.old) kuuluva räsiga
- kui md5sum.py leiab, et räsi on erinev, siis liigutatakse hinded.html hinded.html.old failiks ning saadatakse mail.py abil meile e-kiri selle kohta
Paigaldamine
Töövahendid ja õpetused:
- Eeldab teksiredaktor Vi kasutamist vähemalt crontabi osas, selle kohta leiate abi siit: http://www.cs.fsu.edu/general/vimanual.html#input
- Vajalikud failid võite luua Vi abil või enda arvutis. Teisel juhul on vajalik failide üles laadimiseks Secure FTP klient, näiteks WinSCP
- Skripti lisamise jaoks crontabi on vajalik Secure Shell klient, näiteks PuTTY
Kõigepealt logime SSH kliendiga enos.itcollege.ee'sse ning loome kausta itk ja sinna samasse kausta järgnevad failid script.sh md5sum.py mail.py. Mida on vaja muuta, see on skriptides kommentaaridena kirjas.
script.sh
#!/bin/bash
kasutajanimi=snäide # muuda
salasona=ArvaÄra112 # muuda
student_id=numbridsiia # selle saad avalehelt minu hinnete lingilt
cd $HOME/itk
file=hinded.html
/usr/sfw/bin/wget --user-agent "ITK Notifier" --no-check-certificate --keep-session-cookies --save-cookies cookies.txt \
--post-data="username=$kasutajanimi&pw=$salasona&Login=Logi sisse" https://itcollege.ois.ee/auth/login -O login
/usr/sfw/bin/wget --user-agent "ITK Notifier" --no-check-certificate \
--load-cookies cookies.txt https://itcollege.ois.ee/et/grade?student_id=$student_id -O $file
rm -f login cookies.txt
new=`python md5sum.py $file`
if [ -f $file ] && [ -f $file.old ]; then
old=`python md5sum.py $file.old`
else
old=`python md5sum.py $file`
mv $file $file.old
fi
if [ $new = $old ]; then
rm -f $file
else
python mail.py
mv $file $file.old
fi
chmod a-rwx,u+rwx $file.old
md5sum.py
Antud fail asendab enoses puuduva md5sum tööriista, seda faili pole vaja muuta.
import md5
import sys
f = open(sys.argv[1])
h = md5.new()
h.update(f.read())
hash = h.hexdigest()
f.close()
print hash
mail.py
Et ikka meilid kohale jõuaks, siis võiks seda faili ennem muuta.
# -*- coding: utf-8 -*-
import smtplib
fromaddr = "From: ITK Notifier <ois@itcollege.ee>" # muuda kui tahad, aga ei pea
toaddrs = "To: Sinu Email <sinuemail@gmail.com>" # muuda kindlasti, muidu näed nendest meilidest ainult und
msg = fromaddr + "\n" + toaddrs + "\nSubject: Kontrolli oma hinnetelehte\n" + "\nJa nii ongi :)" # muuda enda äranägemise järgi
server = smtplib.SMTP('norman.itcollege.ee') # ei tohi muuta! (meilid ei tule kohale)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Failiõigused
Anname käivitamis- ja lugemisõiguse üksnes failiomanikule.
chmod 700 $HOME/itk/ | chmod 500 $HOME/itk/*
crontab
Crontabi üles seadmiseks kirjutame käsureale:
/usr/xpg4/bin/crontab -e
Avanenud tekstiredaktoris kirjeldame järgneva (soovitan kopeeri/lõika meetodit vigade vältimiseks):
* * * * * /home/sinukodukataloog/itk/script.sh >/dev/null 2>&1
Ja ongi kõik! Katsetada saate muutes käsitsi hinded.html.old sisu.
Märkused
- Kui mailid läbi ei tule, siis uurige oma rämpsposti kataloogi ning lisage adressaat turvaliste saatjate loendisse.
- Juhul kui hinded.html.old puudub, siis emaili ei saadeta (tavaliselt peale paigaldamist).
Tulevikus
Kellel palju vaba aega, siis võib nokitseda näiteks järgnevate asjadega:
- Hinnetelehelt table class="data" e-kirja sisuna htmlis, et ei peaks selle jaoks ÕISi minema.
- Mitme ITK alamlehe kontrollimine ühe skriptiga, tsükli ja massiivi abil?!
- Miks mitte sarnane või parem funktsionaalsus ÕISist valikute alt leida.
Autor
--Eisok 12:46, 16 September 2010 (EEST)