Skriptimine 2017: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mrajur (talk | contribs)
No edit summary
Mrajur (talk | contribs)
No edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__toc__
__toc__


=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
<pre>
[sudo] ./jaga.sh KAUST GRUPP <JAGATUD KAUST>
</pre>
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]]
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.pdf  Failiserveri loeng ]
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.pdf  Veebiserveri loeng ]
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?




Line 217: Line 127:


=Bash-i info=
=Bash-i info=
==Bash skripti alustamine==
Looge fail laiendiga .sh ning avage see oma lemmik editoriga (näiteks vi)
Esimesena määrame millega skripti käivitatakse ehk:
#!/bin/bash
skripti muutmine selliseks, et seda saaks käivitada
chmod +x skriptinimi.sh


==If lause moodustamine==
==If lause moodustamine==
Line 224: Line 143:
  '''fi'''
  '''fi'''
  http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
  http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
https://bash.cyberciti.biz/guide/If..else..fi


==Debug mode==
==Debug mode==
Line 234: Line 154:
  Juhul kui käsk õnnestus on exitkood 0
  Juhul kui käsk õnnestus on exitkood 0
  Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0'ist erinev
  Juhul kui käsu käivitamisel tekkis tõrke on exit kood 0'ist erinev


==Sisendi lugemine==
==Sisendi lugemine==
Line 240: Line 161:
  read -p "tekst" muutujanimi
  read -p "tekst" muutujanimi


==Bash tsüklid==
==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öö==
 
{| class="wikitable"
!Nimi
!Teema
|Link
|-
|Erik Sõlg
|Rotten Tomatoes otsiagent (filmid, vastavalt kriteeriumile)
|http://enos.itcollege.ee/~mrajur/python/esolg.zip
|-
|Margus Sumla
|ÕIS'i hinnete automaatne kontroll ja e-maili saatmine hinde muutumisel
|http://enos.itcollege.ee/~mrajur/python/msumla.zip
|-
|Karel Laid
|Oracle alertlogi jälgimine, alertide saatmine e-mailina
|http://enos.itcollege.ee/~mrajur/python/klaid.zip
|-
|Richard Rõngelep
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)
|http://enos.itcollege.ee/~mrajur/python/rrongelep.zip
|-
|Ott Pärnoja
|apache2 vhosti lisamine/muutmine(SSL lisamise võimalus, ID kaardi tugi)
|http://enos.itcollege.ee/~mrajur/python/oparnoja.zip
|-
|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.
|http://enos.itcollege.ee/~mrajur/python/ssaar.zip
|-
|Jevgeni Kuzmin
|Piltide masstöötlus (muuta saab resolutsiooni(kuni X KB), formaati(jpg,png) ja suurust(kuni X KB)
|http://enos.itcollege.ee/~mrajur/python/jkuzmin.zip
|-
|Kadri Karatšev
|yahtzee
|http://enos.itcollege.ee/~mrajur/python/kkaratsev.zip
|-
|Margit Kont
|Portscanner
|http://enos.itcollege.ee/~mrajur/python/mkont.zip
|-
|Veiko Villo
|HV toote hinna jälgimine.
|http://enos.itcollege.ee/~mrajur/python/vvillo.zip
|-
|Marta-Heliise Tuur
|Hangman välise sõnadebaasiga ja mehe joonistamisega
|http://enos.itcollege.ee/~mrajur/python/mtuur.zip
|-
|Karl Oskar V. Kukke
|Texas hold 'em pokker
|http://enos.itcollege.ee/~mrajur/python/kkukke.zip
|-
|Raigo Laanemets
|Isikukoodi elementide analüüsija kasutades väliseid andmeallikaid
|http://enos.itcollege.ee/~mrajur/python/rlaanemets.zip
|-
|Marvin Martinson
|Skript mis käib üle failide ja võtab seal info ja laeb selle andmebaasi
|http://enos.itcollege.ee/~mrajur/python/mmartinson.zip
|-
|Katariina Purru
|Failide/kaustade korrastaja
|http://enos.itcollege.ee/~mrajur/python/kpurru.zip
|-
|Triinu Tamm
|Duplikaatide eemaldaja
|http://enos.itcollege.ee/~mrajur/python/ttamm.zip
|-
|Kaspar Kannik
|MP3 Mängija
|http://enos.itcollege.ee/~mrajur/python/kkannik.zip
|-
|Aleksandr Laada
|Kataloogide sünkroniseerija koos logimisega
|http://enos.itcollege.ee/~mrajur/python/alaada.zip
|-
|Priit Saar
|Failinimede muutja
|http://enos.itcollege.ee/~mrajur/python/psaar.zip
|-
|Aleksandr Pikalo
|Udp chat serveriga
|http://enos.itcollege.ee/~mrajur/python/apikalo.zip
|-
|}
 
==Retsensiooni sisu==
Retsensioon tuleb kirjutada endast kolme järgneva töö kohta.
Iga töö kohta kirjutatav retsensioon peab sisaldama järgmiseid punkte:
Kas loodud skript/programm vastab lähteülesandele?
Teiepoolsed soovitused koodiparandusteks.
Teiepoolne hinnang kirjutatud koodile(tekstiline + number 1-5ni).
 
==Tähtajad==
Kodutöö 1
Tähtaeg 19.03 kell 23:59
Hinnangute tähtaeg 26.03 kell 23:59


Kodutöö 2
https://www.cyberciti.biz/faq/bash-for-loop/
Tähtaeg 07.05 kell 23:59
https://www.cyberciti.biz/faq/bash-while-loop/
Hinnangute tähtaeg 14.05 23:59
https://bash.cyberciti.biz/guide/The_case_statement


Loengu slaide saab vaadata aadressilt http://enos.itcollege.ee/~mrajur
=Protsessi skeemid=
Siit piisab kui kasutate esimest nelja elementi ehk Flowline, Terminal, Process ja Decision
https://en.wikipedia.org/wiki/Flowchart

Latest revision as of 13:52, 16 April 2018


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

Bash skripti alustamine

Looge fail laiendiga .sh ning avage see oma lemmik editoriga (näiteks vi)
Esimesena määrame millega skripti käivitatakse ehk:
#!/bin/bash
skripti muutmine selliseks, et seda saaks käivitada 
chmod +x skriptinimi.sh

If lause moodustamine

if [ Funktsioon ] then
tee midagi
fi
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
https://bash.cyberciti.biz/guide/If..else..fi

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

Tsüklid

https://www.cyberciti.biz/faq/bash-for-loop/
https://www.cyberciti.biz/faq/bash-while-loop/
https://bash.cyberciti.biz/guide/The_case_statement

Protsessi skeemid

Siit piisab kui kasutate esimest nelja elementi ehk Flowline, Terminal, Process ja Decision
https://en.wikipedia.org/wiki/Flowchart