Skriptimine 2017
Hindamiskriteeriumid
Arvestuse saamiseks peab tudeng esitama järgmised tööd:
2 kodutööd 3 hinnangut teiste pythoni kodutöödele 2 kontrolltööd
Lisapunkte on võimalik teenida esitades tähtaegselt praktikumide töid
Kodutööd saata aadressile martin.rajur@itcollege.ee
Labori keskkond
https://elab.itcollege.ee/users/sign_in
Labs -> Skriptimine 2017 Kasutaja: student Parool: student
Praktikumide ülesanded
Ülesanne 1
Looge skript, mis jagaks etteantud grupile uue kausta
[sudo] ./jaga.sh KAUST GRUPP <JAGATUD KAUST>
Skript teeb järgnevat:
- paigaldab samba (kui vaja)
- loob kausta KAUST (kui vaja)
- loob grupi GRUPP (kui vaja)
- lisab grupile sobivad read smb.conf faili ja teeb failiserveri teenusele reload'i
- abimaterjal: Failiserveri labor v.2
Mõistlik on konfiguratsioonist eelnevalt koopia teha ja muudatused koopiasse sisse viia. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle.
Ülesanne 2
Looge skript mille abil uude serverisse/tööjaama paigaldatakse vajadusel GIT Luuakse kodukataloogi kaust kuhu giti repositooriumit hakatakse sünkroniseerima(kasutajalt küsitakse kausta nime) Seadistatakse ühendus rühmatöö git'i
git remote add origin git@bitbucket.org:Martinra_itk/skriptimine_2017.git
Tehakse esimene git pull
Sisselogimiseks võib kasutada nii parooli küsimist kui ssh võtit, vastavalt valikule ka see osa seadistada
Ülesanne 3
Ülesandeks on luua lihtsam kalkulaator. Kasutajalt küsitakse muutujad ja tehe ning kuvatakse ekraanile tehe koos vastusega
Ülesanne 4
Looge skript mis arvutab kokku sisendiks antud kasutajale allokeeritud mälukoguse(VSZ) ja kasutuses oleva mälukoguse(RSS) suurima täiskohalise ühikuna(K,M,G,T) Kasutaja tuleb küsida kasutajaliidese kaudu
Ülesanne 5
Looge skript mis arvutab kõikide /etc kaustas ja alamkaustades olevate .conf laiendiga failide md5sum väärtused ja salvestab need faili selliselt et esimesena on failinimi ja teisena hash Ülesannet on võimalik lahendada ka one-linerina!
Pythoni praktikumid
Ülesanne 1
Looge kalkulaatori skript mis küsib käsurealt sisendit ja liidab, lahutab, korrutab, jagab, astendab ja juurib.
Ülesanne 2
Looge programm mis küsib kasutajalt sisendiks numbrit ja selle järgi tekitab korrutustabeli. Number on siis tabli X ja Y telje maksimaalseks väärtuseks.
Ülesanne 3
Looge numbri arvutamise mäng. Number peab olema naturaalarv ja kasutajalt küsitakse vastuseid seni kuni saadakse õige vastus. Vale vastuse puhul öeldakse kas otsitav number on suurem või väiksem.
Ülesanne 4
Tekitage XML parser mille abil on võimalik XML sõnumist otsida erinevaid elemente nii päisest kui kehast. Failinimi tuleb anda sisendiks igal käivitamisel, elementide nimed tuleb võtta seadistuse failist, sõnumid võivad olla nii Eesti kui Inglise keelsed. Näidis XML sõnumid mille lugemine peab õnnestuma saab aaderssilt http://enos.itcollege.ee/~mrajur/
Ülesanne 5
Tekitage süsteemi jõudluse testimise skript. Testima peaks a) võrguühenduse kiirust b) andmesalvestuslahenduse kiirust(lugemine/kirjutamine) c) Protsessori kiirust(võite ise välja mõelda mingisuguse testi) d) Midagi muud?
Linuxi käsud
Käsk | Funktsioon | Man link | Näidis |
---|---|---|---|
cd | Change Directory | http://www.skrenta.com/rt/man/cd.1.html | cd /var/log |
ls | list directory contents | http://www.skrenta.com/rt/man/ls.1.html | ls -lah /var/log |
ps | report process status | http://www.skrenta.com/rt/man/ps.1.html | ps -ef |
grep | print lines matching a pattern | http://www.skrenta.com/rt/man/grep.1.html | grep -R 'error' /var/log/* |
tail | output the last parts of file | http://www.skrenta.com/rt/man/tail.1.html | tail -f /var/log/syslog |
cat | concatenate files and print on the standard output | http://www.skrenta.com/rt/man/cat.1.html | cat /var/log/syslog |
man | format and display the on-line manual pages | http://www.skrenta.com/rt/man/man.1.html | man man |
su | run a shell with substitute user and group IDs | http://www.skrenta.com/rt/man/su.1.html | su - root |
cp | copy files and directories | http://www.skrenta.com/rt/man/cp.1.html | cp /var/log/syslog /tmp/tmp_syslog |
mv | move (rename) files/directories | http://www.skrenta.com/rt/man/mv.1.html | mv /var/log/syslog.5 /arhiiv |
rm | remove files or directories | http://www.skrenta.com/rt/man/rm.1.html | rm /tmp/tmp_syslog |
sed | Stream editor | http://www.skrenta.com/rt/man/sed.1.html | sed -ie 's/mida/millega/g' /tmp/tmp_syslog |
mkdir | make directories | http://www.skrenta.com/rt/man/mkdir.1.html | mkdir /tmp/skript |
chmod | change file access premissions | http://www.skrenta.com/rt/man/chmod.1.html | chmod 700 /tmp/skript/myscript.sh |
chown | change file owner or group | http://www.skrenta.com/rt/man/chown.1.html | chown student:student /tmp/skript/myscript.sh |
chgrp | Change group ownership | http://www.skrenta.com/rt/man/chgrp.1.html | chgrp root /tmp/skript/myscript.sh |
whoami | print effective userID | http://www.skrenta.com/rt/man/whoami.1.html | whoami |
pwd | print name of current/working directory | http://www.skrenta.com/rt/man/pwd.1.html | pwd |
awk | pattern scanning and processing language | http://www.skrenta.com/rt/man/awk.1.html | Echo one two | awk ‘{print $1}’ |
find | search for files in a directory hierarchy | http://www.skrenta.com/rt/man/find.1.html | find / -name passwd |
cut | remove sections from each line of files | http://www.skrenta.com/rt/man/cut.1.html | http://www.thegeekstuff.com/2013/06/cut-command-examples |
sort | sort lines of text files | http://www.skrenta.com/rt/man/sort.1.html | ls -la /var/log | sort -k5 -n |
bc | An arbitrary precision calculator language | http://www.skrenta.com/rt/man/bc.1.html | echo 5+5 | bc |
Bash-i info
If lause moodustamine
if [ Funktsioon ] then tee midagi fi http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
Debug mode
bash -x /skripti/path.sh
Exit koodid
Viimase käivitatud käsu exit koodi leiate muutujast $? Juhul kui käsk õnnestus on exitkood 0 Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0'ist erinev
Sisendi lugemine
read muutujanimi read -p "tekst" muutujanimi
Bash tsüklid
https://www.cyberciti.biz/faq/bash-for-loop/
Kodutööd
Bashi kodutöö
Kodutöö ülesandeks on luua skript mille abil lisada bind9 DNS serverisse kirjeid. Kirjete lisamisel tuleb kontrollida kas lisatav ip aadress või hostinimi on juba olemas, juhul kui see leitakse tuleb anda adminnile võimalus täiendava lisamiseks või asendamiseks(nii hostinime kui ip). Kirjete sisend võib olla käsurealt käsitsi või failiga sisendiks. Olenemata sisendist tuleb iga rea kohta kontrollida kirje olemasolu. Skript peab kontrollima reverse resolution zone filet ning seda täiendama. Peale muudatuste tegemist tuleb dns serverile teha ka reload.
Loengus tutvustatud näidis(puudustega) protsessivoog on saadaval http://enos.itcollege.ee/~mrajur
Täiendavad kitsendused mis peaks tööd lihtsustama: Skripti abil peab saama ainult lisada ja muuta A ja PTR kirjeid, kustutamine ei ole vajalik Reverse tsooni faili lisamisel tuleb ka named.conf'i uuendada.
NB! Ärge unustage seriali muuta
Abiks materjal: https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname https://help.ubuntu.com/community/BIND9ServerHowto http://www.bashoneliners.com
Pythoni kodutöö
Nimi | Teema |
---|---|
Erik Sõlg | Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile) |
Margus Sumla | ÕIS'i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel |
Karel Laid | Oracle alertlogi jälgimine, alertide saatmine e-mailina |
Richard Rõngelep | Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB) |
Ott Pärnoja | apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi) |
Siim Saar | Tail -f kloon üle HTTP/Websocketi, kus kasutaja annab ette failid mida ta tahab pollida ning seejärel käivitatakse veebiserver ( näiteks 192.168.0.1:3000 ), kust teised läbi brauseri näevad kuidas logidesse lisanduvad read. |
Jevgeni Kuzmin | Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB) |
Kadri Kartašev | yahtzee |
Margit Kont | Portscanner |
Veiko Villo | HV toote hinna jälgimine. |
Tähtajad
Kodutöö 1 Tähtaeg 19.03 kell 23:59 Hinnangute tähtaeg 26.03 kell 23:59
Kodutöö 2 Tähtaeg 07.05 kell 23:59 Hinnangute tähtaeg 14.05 23:59
Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur