ITK märguandja

From ICO wiki
Revision as of 12:00, 17 September 2010 by Eisok (talk | contribs) (→‎Autor)
Jump to navigationJump to search

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:


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

check=`/usr/xpg4/bin/grep -q logout $file`
if [ -z $check ]; then
	rm -f $file
        exit
fi

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