Category:Skriptimiskeeled (arhiiv): Difference between revisions
m Kkarmo moved page Category:Skriptimiskeeled to Category:Skriptimiskeeled (arhiiv) |
|||
(133 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
= | ==Skriptimiskeeled ainekaart== | ||
== | |||
===Eesmärk=== | |||
Õppeaine eesmärgiks on tutvustada õppijatele skriptimiskeelte vajalikkust korduvate haldustegevuste automatiseerimisel ning arendada õppijate oskuseid serverite ja tööjaamade haldamiseks. | |||
===Lühitutvustus=== | |||
Õppeaines käsitletakse skriptimiskeeli kui ühte töövahendit, mille abil on võimalik süsteemide haldamiseks vajalikke tegevusi efektiivselt ning otstarbekalt sooritada ja automatiseerida. Pikemalt tutvustatakse Bash kooriku programmeerimisvõimalusi, skriptimiskeelt Python ja soovi korral Rubyt või PowerShelli. Õppija omandab aine läbimise käigus enamlevinud srkiptimisvahendite esmase kasutusoskuse ja ülevaate tänapäeval kasutatavatest skriptimisvahenditest. | |||
== | ===Õpiväljundid=== | ||
* Õppija mõistab skriptimise kui töövõtte vajadust ning kasutusvaldkondi. | |||
* Õppija teab ja tunneb enimkasutatavaid skriptimiskeeli ja nende kasutamisvõimalusi. | |||
* Õppija oskab kasutada skriptimiskeeli lihtsamate haldustegevuste automatiseerimiseks. | |||
* Õppija oskab koostada keerulisemaid skripte kasutades selleks erialast kirjandust ja sotsiaalseid keskkondi | |||
===Hinde kujunemine=== | |||
Arvestuse tulemus kujuneb semestri jooksul tehtud töö baasil. Hindamisele kuuluvad iseseisva töö aruanded ehk skriptid koos dokumentatsiooniga (30% ulatuses) ning praktilised kontrolltööd (40% ulatuses). Kontrolltööd koosnevad praktilistest arvuti abil lahendatavatest skriptimisülesannetest. Arvestustööd saab teha semestri jooksul (kui kodutööd/kontrolltööd on tehtud) või arvestuse päeval. | |||
Iseseisev töö koosneb kahest hinnatavast plokist: | |||
* Bash | |||
* Python (mille võib soovi korral asendada Ruby, Perli või PowerShelliga) | |||
Igas plokis tuleb õppijal koostada aruanne, mis koosneb juhendist ja enda loodud skriptist. Iseseisva tööna tuleb teha kokku kaks aruannet. | |||
'''Hea skript (vastavalt 1. loengu lõpus kokku lepitule):''' | |||
# töötab (st teeb seda, mida vaja) | |||
# on loetav | |||
# on hästi kommenteeritud | |||
# on trepitud (visuaalselt atraktiivne) | |||
# on optimeeritud (kood, ressurss, õigused) | |||
# annab inimloetava väljundi (sh progressi-indikaatorid) | |||
# annab mõistliku väljumiskoodi (exit code) | |||
# on skriptitav (väljumiskood + võimalus käivitada ilma interaktiivsuseta) | |||
# on keskkonnateadlik (ei eelda, et ta tingimata nt Ubuntu 14.04 peal käivitatakse) | |||
# on veakindel (ei eelda, et kasutaja alati kõik õigesti sisestab või et kõik vajalikud pakid juba paigaldatud on) | |||
# kasutab muutujaid (ei ole nö ''hardcoded'' parameetreid) | |||
# on skaleeritav | |||
[https://docs.google.com/document/d/1d1j-ucJLAfOiwNIpL9CKEUsEbXdVDieHBMFfwJV1h20/edit Arvestuse ülesanne (21.04.2015)] | |||
Arvestuse | |||
==Üldist== | |||
===Anna teada, mida aines paremaks võiks teha (keelatud pole ka lihtsalt soovitused/kiitused/laitused=== | |||
[[Skriptimiskeeled aine muudatuste ideed]] | [[Skriptimiskeeled aine muudatuste ideed]] | ||
=Bash= | ===Eelmiste voorude tagasiside=== | ||
[[File:Kaugõppe tagasiside koos kommentaaridega 2013 Sügis.pdf]] | |||
===GIT=== | |||
Kodutööd on soovitatav esitada [https://www.atlassian.com/git/tutorials/ GIT] repositooriumi kaudu, kas [https://bitbucket.org/ Bitbucket], [https://github.com/ GitHub] või mõne muu keskkonna abil. | |||
===Loengusalvestised 2015 sügis kaugõppele=== | |||
[https://echo360.e-ope.ee/ess/portal/section/1801900e-9170-42fa-95ef-e192827d102a Üldine link loengusalvestistele] | |||
===Varasemad salvestised=== | |||
[https://echo360.e-ope.ee/ess/portal/section/a7bec2d8-1c58-4228-81f0-38cc032a0d21 Üldine link 2014 sügise kaugõppe loengusalvestistele] | |||
*[https://echo360.e-ope.ee/ess/echo/presentation/a0e8b319-a96c-4fd2-adea-f9f5b3eccb02?ec=true Kaugõpe 2014 sügis 27. september 2014.a. Sissejuhatus + Bash algus] | |||
*[https://echo360.e-ope.ee/ess/echo/presentation/027c9cf3-1a09-41fb-b799-a19c2d7d42b6?ec=true Kaugõpe 2014 sügis 28. september 2014.a. Bash] | |||
*[https://echo360.e-ope.ee/ess/echo/presentation/c0fd3981-d27f-4fe7-aa37-d43e2522816d Kaugõpe 2014-10-17 10:00 Bash] | |||
*[https://echo360.e-ope.ee/ess/echo/presentation/558a7951-8bea-46d8-a2be-c063e3a7e3f6 Kaugõpe 2014-10-17 12:00 Bash] | |||
*[https://echo360.e-ope.ee/ess/echo/presentation/db7e6e24-2967-44ae-9e90-0613250bf9a4 Kaugõpe 2014-10-18 16:00 Bash] | |||
*[https://echo360.e-ope.ee/ess/echo/presentation/005628c4-a800-4efb-94a1-28cffd172ef4 Kaugõpe, 2014-11-08 16:00 Python] | |||
==Bash== | |||
[http://enos.itcollege.ee/~mernits/skriptimine/bash/src/bash-basics.html Bash loengumaterjal] | |||
[https://echo360.e-ope.ee/ess/portal/section/86a128a6-f11a-4586-bc77-554a3bd50802 Loengute videod 2015 kevad] | |||
[http://enos.itcollege.ee/~mernits/osadmin/kt/enesetest.pdf Enesetest aine Bash osa eelduse kontrolliks] | |||
[http:// | [http://tldp.org/LDP/abs/html/ Materjal, mille läbitöötamine asendab Bash loengutes kaasatöötamist] | ||
[http:// | [http://echo360.e-uni.ee/ess/portal/section/c99546d5-d96d-4407-86d1-f74297bdfdd7 Loengute ja praktikumide salvestused -- eelmiste aastate omad] | ||
[http:// | [http://echo360.e-uni.ee/ess/echo/presentation/a41829f1-e5f2-4778-8fc1-23337f9f0646 Esimene Bash loeng - sissejuhatus] päevaõppele 05.02.2013 | ||
Bash | Tunnis lahendatud näited leiab siit - [[Bash näited 2013]] | ||
==Tunnis antud ülesanded== | Kiiruse peale lahendatavad ülesanded. Punkte saab esimene töötav lahendus [[Bash quests 2014]] | ||
Bash arvestuse saamiseks tuleb teha kodutöö, mis koosneb kahest osast (vaata loengumaterjali) ja sooritada arvestustöö kas tunnis või arvestuse päeval. Arvestustöö tegemise eelduseks on esitatud kodutöö. | |||
===Tunnis antud ülesanded=== | |||
http://enos.itcollege.ee/~mernits/skriptimine/robot.itcollege.ee-access.log.zip | http://enos.itcollege.ee/~mernits/skriptimine/robot.itcollege.ee-access.log.zip | ||
http://www.grymoire.com/Unix/Sh.html Hea materjal algajale | |||
=== | ====Bash Kodutöö 1 - failiteenus==== | ||
Looge skript, mis jagaks etteantud grupile uue kausta | Looge skript, mis jagaks etteantud grupile uue kausta | ||
<pre> | <pre> | ||
Line 76: | Line 115: | ||
*abimaterjal: [[Failiserveri labor v.2]] | *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 ] | |||
Kes jõuab teeb enne konfiguratsioonist koopia ja teeb muudatused koopiasse. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle | Kes jõuab teeb enne konfiguratsioonist koopia ja teeb muudatused koopiasse. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle | ||
=== | [[Bash_n%C3%A4ide | Tunnis antud näide ]] | ||
====Bash kodutöö 2 - veebihosting/veebiteenus==== | |||
Looge skript, mis looks uue veebkodu | Looge skript, mis looks uue veebkodu | ||
Line 90: | Line 135: | ||
*Loob nimelahenduse (lihtsalt /etc/hosts failis) | *Loob nimelahenduse (lihtsalt /etc/hosts failis) | ||
*Kopeerib vaikimisi veebisaidi ja modifitseerib index.html faili sisu vastavalt loodavale lehele | *Kopeerib vaikimisi veebisaidi ja modifitseerib index.html faili sisu vastavalt loodavale lehele | ||
*Abimaterjal [[Veebiserveri labor v.2]] | *Abimaterjal [[Virtualhost apache2 näitel]] [[Veebiserveri labor v.2]] | ||
'''The only way to really learn scripting is to write scripts''' | |||
====Praktika==== | |||
* Esimeses praktikumis installeeritakse Ubuntu töölaud ja luuakse lihtsamaid skripte | |||
===Tunnis antud ülesanded (Bash)=== | |||
<pre> | |||
Teha skript, mis loeb käsurealt ip aadressi ja nime, | |||
ning lisab loetud andmed /etc/hosts faili (5p, 3p, 2p) | |||
</pre> | |||
[[Bash quests 2013]] - leht neile, kellel pole bash kodutöö teema ideed... | |||
[[Skriptimiskeeled aine aruanded 2010 sügis]] | |||
====Teemad==== | |||
==Python== | |||
[http://enos.itcollege.ee/~mernits/python/python-algkursus-v6-2012-fall.odp Loengumaterjal ODP vormingus] | |||
[http://echo360.e-uni.ee/ess/echo/presentation/318ae1d5-75ce-4520-9ce6-16315f500f90 Päevaõppe loengu salvestus 19.märts.2013] | |||
Lisamaterjal (algajad saavad siit abi isegi siis, kui programmeerimise algõpe jäi puudulikuks) | |||
http://learnpythonthehardway.org/book/ - Selle materjali läbimine asendab loengutes kohalkäimist | |||
http://www.codecademy.com/tracks/python - Väga hea algus algajale | |||
https://courses.cs.ut.ee/all/MTAT.03.100/2012_fall/uploads/opik/ - Suurepärane materjal | |||
[[Python tunnis tehtud näited]] | |||
<source lang="python"> | |||
#!/usr/bin/python | |||
# -*- coding: utf-8 -*- | |||
import urllib | |||
from PIL import Image | |||
import string | |||
VIIRUS='uggc://vztf.kxpq.pbz/pbzvpf/clguba.cat' | |||
== | #see funktsioon jäta viimaseks! | ||
def make_rot_n(n): | |||
lc = string.lowercase | |||
trans = string.maketrans(lc, lc[n:] + lc[:n]) | |||
return lambda s: string.translate(s, trans) | |||
rot13 = make_rot_n(13) | |||
fh = urllib.urlopen(rot13(VIIRUS)) | |||
localFile = open('v.png', 'w') | |||
localFile.write(fh.read()) | |||
localFile.close() | |||
= | f = Image.open("v.png").show() | ||
</source> | |||
===Python kodutööd=== | |||
Python kodutöö saamiseks saada e-kiri õppejõule ja subjektiks pane Python kodutöö küsimine. | |||
==PowerShell== | |||
Paigaldage Windows Management Framework 5.0 Preview https://www.microsoft.com/en-us/download/details.aspx?id=46889 | |||
===[[Skriptimiskeeled: powershelli kodutööd 2012, kevad, päevaõpe]]=== | |||
* [[PowerShelli näidisteemad kodutöödeks 2012, kevad, päevaõpeõpe]] | |||
* [[PowerShelli näidisteemad kodutöödeks 2010, sügis, kaugõpe]] | |||
[[PowerShelli arvestusülesanne 2011, sügis, kaugõpe]] | [[PowerShelli arvestusülesanne 2011, sügis, kaugõpe]] | ||
<!--==Windows operatsioonisüsteemis kasutatavad scriptimiskeeled: lühitutvustus== | <!--==Windows operatsioonisüsteemis kasutatavad scriptimiskeeled: lühitutvustus== | ||
===Teooria=== | ====Teooria==== | ||
===Praktika=== | ====Praktika==== | ||
http://rkeithhill.wordpress.com/2011/10/19/windows-powershell-version-3-simplified-syntax/ | |||
==VBScript ja selle kasutamine haldustegevuste automatiseerimisel== | ===VBScript ja selle kasutamine haldustegevuste automatiseerimisel=== | ||
===Teooria=== | ====Teooria==== | ||
===Praktika===--> | ====Praktika====--> | ||
=PowerShell scriptimiskeele tutvustus, peamised kasutatavad käsud= | ==PowerShell scriptimiskeele tutvustus, peamised kasutatavad käsud== | ||
==Tutvustus== | * Õpiobjekt: PowerShell skriptimiskeele ja -keskkonna tutvustus http://enos.itcollege.ee/~mernits/Powershell1/ | ||
* Hea algajale: http://technet.microsoft.com/en-US/scriptcenter/dd742419.aspx | |||
===Tutvustus=== | |||
* Windows PowerShell Owner’s Manual http://technet.microsoft.com/et-ee/library/ee221100(en-us).aspx | * Windows PowerShell Owner’s Manual http://technet.microsoft.com/et-ee/library/ee221100(en-us).aspx | ||
* Introducing Windows PowerShell http://msdn.microsoft.com/en-us/library/ms714418(v=VS.85).aspx | * Introducing Windows PowerShell http://msdn.microsoft.com/en-us/library/ms714418(v=VS.85).aspx | ||
Line 197: | Line 249: | ||
*'''ABIKS: PowerGUI - http://www.powergui.org/''' Kena graafiline liides ja palju valmistehtud skripte | *'''ABIKS: PowerGUI - http://www.powergui.org/''' Kena graafiline liides ja palju valmistehtud skripte | ||
==PowerShelli paigaldus== | ===PowerShelli paigaldus=== | ||
* Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0) http://support.microsoft.com/kb/968929 | * Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0) http://support.microsoft.com/kb/968929 | ||
==PowerShelli seaded== | ===PowerShelli seaded=== | ||
* Using the Set-ExecutionPolicy Cmdlet http://technet.microsoft.com/et-ee/library/ee176961(en-us).aspx | * Using the Set-ExecutionPolicy Cmdlet http://technet.microsoft.com/et-ee/library/ee176961(en-us).aspx | ||
** Signing PowerShell Scripts http://www.hanselman.com/blog/SigningPowerShellScripts.aspx | ** Signing PowerShell Scripts http://www.hanselman.com/blog/SigningPowerShellScripts.aspx http://www.hanselman.com/blog/SigningPowerShellScripts.aspx | ||
** Signing PowerShell Scripts – Automatically http://huddledmasses.org/signing-powershell-scripts-automatically/ | ** Signing PowerShell Scripts – Automatically http://huddledmasses.org/signing-powershell-scripts-automatically/ | ||
** Obtaining a Code Signing Certificate and Signing PowerShell Scripts http://www.mikepfeiffer.net/2010/02/obtaining-a-code-signing-certificate-and-signing-powershell-scripts/ | ** Obtaining a Code Signing Certificate and Signing PowerShell Scripts http://www.mikepfeiffer.net/2010/02/obtaining-a-code-signing-certificate-and-signing-powershell-scripts/ | ||
Line 212: | Line 264: | ||
**Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy unrestricted | **Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy unrestricted | ||
===Praktika=== | ====Praktika==== | ||
* Loo alias Get-Process cmdleti jaoks: prots | * Loo alias Get-Process cmdleti jaoks: prots | ||
* Loo funktsioon näitamaks kõiki printereid nimega printerid | * Loo funktsioon näitamaks kõiki printereid nimega printerid | ||
Line 219: | Line 271: | ||
* Salvesta loodud funktsioon profiili | * Salvesta loodud funktsioon profiili | ||
===Näited=== | ====Näited==== | ||
[[Esimese loengu näited: PowerShell]] | [[Esimese loengu näited: PowerShell]] | ||
[[Esimese loengu näited: PowerShell (2011, päevaõpe)]] | [[Esimese loengu näited: PowerShell (2011, päevaõpe)]] | ||
==PowerShell skriptimiskeskkonna alus- ja põhimõisted== | ===PowerShell skriptimiskeskkonna alus- ja põhimõisted=== | ||
===Sissejuhatus=== | ====Sissejuhatus==== | ||
* Getting Started With Windows PowerShell http://technet.microsoft.com/et-ee/library/ee177003(en-us).aspx#ECAA | * Getting Started With Windows PowerShell http://technet.microsoft.com/et-ee/library/ee177003(en-us).aspx#ECAA | ||
* Piping and the Pipeline in Windows PowerShell http://technet.microsoft.com/et-ee/library/ee176927(en-us).aspx | * Piping and the Pipeline in Windows PowerShell http://technet.microsoft.com/et-ee/library/ee176927(en-us).aspx | ||
===Muutujad ja massiivid=== | ====Muutujad ja massiivid==== | ||
* Set-Variable http://technet.microsoft.com/en-us/library/dd347562.aspx | * Set-Variable http://technet.microsoft.com/en-us/library/dd347562.aspx | ||
* Variables, Arrays, and Hash Tables http://www.powershellpro.com/powershell-tutorial-introduction/variables-arrays-hashes/ | * Variables, Arrays, and Hash Tables http://www.powershellpro.com/powershell-tutorial-introduction/variables-arrays-hashes/ | ||
===If, kordused ja konveierid=== | ====If, kordused ja konveierid==== | ||
* Conditional Logic Using Loops http://www.powershellpro.com/powershell-tutorial-introduction/logic-using-loops/ | * Conditional Logic Using Loops http://www.powershellpro.com/powershell-tutorial-introduction/logic-using-loops/ | ||
* Piping and the Pipeline in Windows PowerShell http://technet.microsoft.com/et-ee/library/ee176927(en-us).aspx | * Piping and the Pipeline in Windows PowerShell http://technet.microsoft.com/et-ee/library/ee176927(en-us).aspx | ||
* PowerShell Parameters, Objects, and Formatting http://www.powershellpro.com/powershell-tutorial-introduction/powershell-parameters-objects-and-formatting/ | * PowerShell Parameters, Objects, and Formatting http://www.powershellpro.com/powershell-tutorial-introduction/powershell-parameters-objects-and-formatting/ | ||
===Praktika=== | ====Tunni näited==== | ||
[[Tunninäide: 7.02.2012, Powershell]] | |||
====Praktika==== | |||
* Võta system EventLog'ist 25 viimast sündmust ja ekspordi need CSV faili | * Võta system EventLog'ist 25 viimast sündmust ja ekspordi need CSV faili | ||
* Leia application EventLog'ist enim kirjeid loonud rakendus | * Leia application EventLog'ist enim kirjeid loonud rakendus | ||
Line 244: | Line 300: | ||
* Leia enim mäluruumi kasutav protsess ja sulge see | * Leia enim mäluruumi kasutav protsess ja sulge see | ||
==PowerShell skriptimiskeskkonnas WMI objektide kasutamine== | ===PowerShell skriptimiskeskkonnas WMI objektide kasutamine=== | ||
===Sissejuhatus=== | ====Sissejuhatus==== | ||
* Using the Get-WMiObject Cmdlet http://technet.microsoft.com/en-us/library/ee176860.aspx | * Using the Get-WMiObject Cmdlet http://technet.microsoft.com/en-us/library/ee176860.aspx | ||
* Connecting to WMI on a Remote Computer by Using Windows PowerShell http://msdn.microsoft.com/en-us/library/ee309377(VS.85).aspx | * Connecting to WMI on a Remote Computer by Using Windows PowerShell http://msdn.microsoft.com/en-us/library/ee309377(VS.85).aspx | ||
Line 251: | Line 307: | ||
===Näited=== | ====Näited==== | ||
* Kolmanda praktikumi naide [[Anna-Printerid.ps1]] | * Kolmanda praktikumi naide [[Anna-Printerid.ps1]] | ||
* Powershell script to retrieve the OperatingSystem and Service Pack http://ss64.com/ps/get-wmiobject-win32.html | * Powershell script to retrieve the OperatingSystem and Service Pack http://ss64.com/ps/get-wmiobject-win32.html | ||
* Use PowerShell to see whats eating your CPU http://www.rn.co.za/html/?tag=get-wmiobject | * Use PowerShell to see whats eating your CPU http://www.rn.co.za/html/?tag=get-wmiobject | ||
==PowerShell skriptimiskeskkonnas IIS veebiserveri haldamine== | ===PowerShell skriptimiskeskkonnas IIS veebiserveri haldamine=== | ||
===Praktika=== | ====Praktika==== | ||
* Koosta skript, mis: | * Koosta skript, mis: | ||
** paigaldaks IIS veebiserveri | ** paigaldaks IIS veebiserveri | ||
Line 267: | Line 323: | ||
** See skript peab väskendama infot viieminutilise intervalliga | ** See skript peab väskendama infot viieminutilise intervalliga | ||
==Kaughaldus PowerShelli abil== | |||
===Teooria=== | ===Kaughaldus PowerShelli abil=== | ||
====Teooria==== | |||
* Running Remote Commands http://technet.microsoft.com/en-us/library/dd819505.aspx | * Running Remote Commands http://technet.microsoft.com/en-us/library/dd819505.aspx | ||
* PowerShell V2 Remoting - a first glimpse http://powershell.com/cs/blogs/tobias/archive/2008/11/06/powershell-v2-remoting-overview.aspx | * PowerShell V2 Remoting - a first glimpse http://powershell.com/cs/blogs/tobias/archive/2008/11/06/powershell-v2-remoting-overview.aspx | ||
===Praktika=== | ====Praktika==== | ||
==Mida uut tuleb PowerShell 5.0 versioonis== | |||
Windows Management Framework 5.0 - http://www.microsoft.com/en-us/download/details.aspx?id=44987 | |||
'OneGet' - apt-get powershellile | |||
[http://mikefrobbins.com/2014/04/13/exploring-the-find-package-cmdlet-from-the-powershell-version-5-preview-oneget-module/ Find-Package näited] | |||
<source lang="powershell"> | |||
Find-Package -Name Java -AllVersions | |||
Find-Package -Name Eclipse -MinimumVersion 4.1 -MaximumVersion 4.3 | |||
Find-Package -Name Java, Eclipse-kepler, WinRAR | Install-Package | |||
</source> | |||
Pakkide allikaid võib lisada, kuid üks on vaikimisi kaasas PS5 preview versiooniga: Chocolatey | |||
<source lang="powershell"> | |||
Get-Command -Module OneGet | |||
Get-PackageSource | |||
Install-Package git | |||
Update-Package git | |||
Uninstall-Package git | |||
</source> | |||
http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference | |||
==PowerShell kodutööd== | |||
1. Teha skript, mis logib sisse BasicAuth abil kaitstud veebilehele ja laeb sealt alla faili. | |||
Skripti parameetrid on 1. url 2. username [3.password] | |||
Skript küsib parooli kasutajalt, kui seda pole ette antud käsurealt. | |||
Skript laeb alla faili mis on url abil antud. | |||
N2iteurl: http://enos.itcollege.ee/~mernits/basicauth/kala.html Kasutajanimi robot ja parool on kala | |||
==Vanad kontrolltööd ja arvestustööd== | |||
[[Skriptimiskeelte arvestustööd ja kontrolltööd]] |
Latest revision as of 15:34, 1 February 2016
Skriptimiskeeled ainekaart
Eesmärk
Õppeaine eesmärgiks on tutvustada õppijatele skriptimiskeelte vajalikkust korduvate haldustegevuste automatiseerimisel ning arendada õppijate oskuseid serverite ja tööjaamade haldamiseks.
Lühitutvustus
Õppeaines käsitletakse skriptimiskeeli kui ühte töövahendit, mille abil on võimalik süsteemide haldamiseks vajalikke tegevusi efektiivselt ning otstarbekalt sooritada ja automatiseerida. Pikemalt tutvustatakse Bash kooriku programmeerimisvõimalusi, skriptimiskeelt Python ja soovi korral Rubyt või PowerShelli. Õppija omandab aine läbimise käigus enamlevinud srkiptimisvahendite esmase kasutusoskuse ja ülevaate tänapäeval kasutatavatest skriptimisvahenditest.
Õpiväljundid
- Õppija mõistab skriptimise kui töövõtte vajadust ning kasutusvaldkondi.
- Õppija teab ja tunneb enimkasutatavaid skriptimiskeeli ja nende kasutamisvõimalusi.
- Õppija oskab kasutada skriptimiskeeli lihtsamate haldustegevuste automatiseerimiseks.
- Õppija oskab koostada keerulisemaid skripte kasutades selleks erialast kirjandust ja sotsiaalseid keskkondi
Hinde kujunemine
Arvestuse tulemus kujuneb semestri jooksul tehtud töö baasil. Hindamisele kuuluvad iseseisva töö aruanded ehk skriptid koos dokumentatsiooniga (30% ulatuses) ning praktilised kontrolltööd (40% ulatuses). Kontrolltööd koosnevad praktilistest arvuti abil lahendatavatest skriptimisülesannetest. Arvestustööd saab teha semestri jooksul (kui kodutööd/kontrolltööd on tehtud) või arvestuse päeval.
Iseseisev töö koosneb kahest hinnatavast plokist:
- Bash
- Python (mille võib soovi korral asendada Ruby, Perli või PowerShelliga)
Igas plokis tuleb õppijal koostada aruanne, mis koosneb juhendist ja enda loodud skriptist. Iseseisva tööna tuleb teha kokku kaks aruannet.
Hea skript (vastavalt 1. loengu lõpus kokku lepitule):
- töötab (st teeb seda, mida vaja)
- on loetav
- on hästi kommenteeritud
- on trepitud (visuaalselt atraktiivne)
- on optimeeritud (kood, ressurss, õigused)
- annab inimloetava väljundi (sh progressi-indikaatorid)
- annab mõistliku väljumiskoodi (exit code)
- on skriptitav (väljumiskood + võimalus käivitada ilma interaktiivsuseta)
- on keskkonnateadlik (ei eelda, et ta tingimata nt Ubuntu 14.04 peal käivitatakse)
- on veakindel (ei eelda, et kasutaja alati kõik õigesti sisestab või et kõik vajalikud pakid juba paigaldatud on)
- kasutab muutujaid (ei ole nö hardcoded parameetreid)
- on skaleeritav
Arvestuse ülesanne (21.04.2015)
Üldist
Anna teada, mida aines paremaks võiks teha (keelatud pole ka lihtsalt soovitused/kiitused/laitused
Skriptimiskeeled aine muudatuste ideed
Eelmiste voorude tagasiside
File:Kaugõppe tagasiside koos kommentaaridega 2013 Sügis.pdf
GIT
Kodutööd on soovitatav esitada GIT repositooriumi kaudu, kas Bitbucket, GitHub või mõne muu keskkonna abil.
Loengusalvestised 2015 sügis kaugõppele
Üldine link loengusalvestistele
Varasemad salvestised
Üldine link 2014 sügise kaugõppe loengusalvestistele
- Kaugõpe 2014 sügis 27. september 2014.a. Sissejuhatus + Bash algus
- Kaugõpe 2014 sügis 28. september 2014.a. Bash
- Kaugõpe 2014-10-17 10:00 Bash
- Kaugõpe 2014-10-17 12:00 Bash
- Kaugõpe 2014-10-18 16:00 Bash
- Kaugõpe, 2014-11-08 16:00 Python
Bash
Enesetest aine Bash osa eelduse kontrolliks
Materjal, mille läbitöötamine asendab Bash loengutes kaasatöötamist
Loengute ja praktikumide salvestused -- eelmiste aastate omad
Esimene Bash loeng - sissejuhatus päevaõppele 05.02.2013
Tunnis lahendatud näited leiab siit - Bash näited 2013
Kiiruse peale lahendatavad ülesanded. Punkte saab esimene töötav lahendus Bash quests 2014
Bash arvestuse saamiseks tuleb teha kodutöö, mis koosneb kahest osast (vaata loengumaterjali) ja sooritada arvestustöö kas tunnis või arvestuse päeval. Arvestustöö tegemise eelduseks on esitatud kodutöö.
Tunnis antud ülesanded
http://enos.itcollege.ee/~mernits/skriptimine/robot.itcollege.ee-access.log.zip
http://www.grymoire.com/Unix/Sh.html Hea materjal algajale
Bash Kodutöö 1 - failiteenus
Looge skript, mis jagaks etteantud grupile uue kausta
jaga KAUST GRUPP <JAGATUD KAUST>
Skript teeb järgnevat
- paigaldab samba (see osa pole kohustuslik)
- 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
Kes jõuab teeb enne konfiguratsioonist koopia ja teeb muudatused koopiasse. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle
Bash kodutöö 2 - veebihosting/veebiteenus
Looge skript, mis looks uue veebkodu Kasutaja sisestab:
loo-kodu www.minuveebisait.ee
- Skript paigaldab apache2 serveri, kui see puudub
- Loob nimelahenduse (lihtsalt /etc/hosts failis)
- Kopeerib vaikimisi veebisaidi ja modifitseerib index.html faili sisu vastavalt loodavale lehele
- Abimaterjal Virtualhost apache2 näitel Veebiserveri labor v.2
The only way to really learn scripting is to write scripts
Praktika
- Esimeses praktikumis installeeritakse Ubuntu töölaud ja luuakse lihtsamaid skripte
Tunnis antud ülesanded (Bash)
Teha skript, mis loeb käsurealt ip aadressi ja nime, ning lisab loetud andmed /etc/hosts faili (5p, 3p, 2p)
Bash quests 2013 - leht neile, kellel pole bash kodutöö teema ideed...
Skriptimiskeeled aine aruanded 2010 sügis
Teemad
Python
Päevaõppe loengu salvestus 19.märts.2013
Lisamaterjal (algajad saavad siit abi isegi siis, kui programmeerimise algõpe jäi puudulikuks)
http://learnpythonthehardway.org/book/ - Selle materjali läbimine asendab loengutes kohalkäimist
http://www.codecademy.com/tracks/python - Väga hea algus algajale
https://courses.cs.ut.ee/all/MTAT.03.100/2012_fall/uploads/opik/ - Suurepärane materjal
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib
from PIL import Image
import string
VIIRUS='uggc://vztf.kxpq.pbz/pbzvpf/clguba.cat'
#see funktsioon jäta viimaseks!
def make_rot_n(n):
lc = string.lowercase
trans = string.maketrans(lc, lc[n:] + lc[:n])
return lambda s: string.translate(s, trans)
rot13 = make_rot_n(13)
fh = urllib.urlopen(rot13(VIIRUS))
localFile = open('v.png', 'w')
localFile.write(fh.read())
localFile.close()
f = Image.open("v.png").show()
Python kodutööd
Python kodutöö saamiseks saada e-kiri õppejõule ja subjektiks pane Python kodutöö küsimine.
PowerShell
Paigaldage Windows Management Framework 5.0 Preview https://www.microsoft.com/en-us/download/details.aspx?id=46889
Skriptimiskeeled: powershelli kodutööd 2012, kevad, päevaõpe
- PowerShelli näidisteemad kodutöödeks 2012, kevad, päevaõpeõpe
- PowerShelli näidisteemad kodutöödeks 2010, sügis, kaugõpe
PowerShelli arvestusülesanne 2011, sügis, kaugõpe
PowerShell scriptimiskeele tutvustus, peamised kasutatavad käsud
- Õpiobjekt: PowerShell skriptimiskeele ja -keskkonna tutvustus http://enos.itcollege.ee/~mernits/Powershell1/
- Hea algajale: http://technet.microsoft.com/en-US/scriptcenter/dd742419.aspx
Tutvustus
- Windows PowerShell Owner’s Manual http://technet.microsoft.com/et-ee/library/ee221100(en-us).aspx
- Introducing Windows PowerShell http://msdn.microsoft.com/en-us/library/ms714418(v=VS.85).aspx
- Scripting with Windows PowerShell http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx
- ABIKS: PowerGUI - http://www.powergui.org/ Kena graafiline liides ja palju valmistehtud skripte
PowerShelli paigaldus
- Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0) http://support.microsoft.com/kb/968929
PowerShelli seaded
- Using the Set-ExecutionPolicy Cmdlet http://technet.microsoft.com/et-ee/library/ee176961(en-us).aspx
- Signing PowerShell Scripts http://www.hanselman.com/blog/SigningPowerShellScripts.aspx http://www.hanselman.com/blog/SigningPowerShellScripts.aspx
- Signing PowerShell Scripts – Automatically http://huddledmasses.org/signing-powershell-scripts-automatically/
- Obtaining a Code Signing Certificate and Signing PowerShell Scripts http://www.mikepfeiffer.net/2010/02/obtaining-a-code-signing-certificate-and-signing-powershell-scripts/
- Windows PowerShell Shortcut Keys http://technet.microsoft.com/et-ee/library/ee176868(en-us).aspx
- Windows PowerShell Profile http://technet.microsoft.com/et-ee/library/ee692764(en-us).aspx
- Customizing the Console http://technet.microsoft.com/et-ee/library/ee156814(en-us).aspx
- Käsk, millega loengus allkirjanõude väljalülitasime
- Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy unrestricted
Praktika
- Loo alias Get-Process cmdleti jaoks: prots
- Loo funktsioon näitamaks kõiki printereid nimega printerid
- Ekspordi alias
- Salvesta loodud funktsioon profiili
Näited
Esimese loengu näited: PowerShell
Esimese loengu näited: PowerShell (2011, päevaõpe)
PowerShell skriptimiskeskkonna alus- ja põhimõisted
Sissejuhatus
- Getting Started With Windows PowerShell http://technet.microsoft.com/et-ee/library/ee177003(en-us).aspx#ECAA
- Piping and the Pipeline in Windows PowerShell http://technet.microsoft.com/et-ee/library/ee176927(en-us).aspx
Muutujad ja massiivid
- Set-Variable http://technet.microsoft.com/en-us/library/dd347562.aspx
- Variables, Arrays, and Hash Tables http://www.powershellpro.com/powershell-tutorial-introduction/variables-arrays-hashes/
If, kordused ja konveierid
- Conditional Logic Using Loops http://www.powershellpro.com/powershell-tutorial-introduction/logic-using-loops/
- Piping and the Pipeline in Windows PowerShell http://technet.microsoft.com/et-ee/library/ee176927(en-us).aspx
- PowerShell Parameters, Objects, and Formatting http://www.powershellpro.com/powershell-tutorial-introduction/powershell-parameters-objects-and-formatting/
Tunni näited
Tunninäide: 7.02.2012, Powershell
Praktika
- Võta system EventLog'ist 25 viimast sündmust ja ekspordi need CSV faili
- Leia application EventLog'ist enim kirjeid loonud rakendus
- Käivita Notepad ning leia seejärel vastav protsess ja tee kindlaks PID
- Leia enim mäluruumi kasutav protsess ja sulge see
PowerShell skriptimiskeskkonnas WMI objektide kasutamine
Sissejuhatus
- Using the Get-WMiObject Cmdlet http://technet.microsoft.com/en-us/library/ee176860.aspx
- Connecting to WMI on a Remote Computer by Using Windows PowerShell http://msdn.microsoft.com/en-us/library/ee309377(VS.85).aspx
- Getting WMI Objects (Get-WmiObject) http://technet.microsoft.com/en-us/library/dd315379.aspx
Näited
- Kolmanda praktikumi naide Anna-Printerid.ps1
- Powershell script to retrieve the OperatingSystem and Service Pack http://ss64.com/ps/get-wmiobject-win32.html
- Use PowerShell to see whats eating your CPU http://www.rn.co.za/html/?tag=get-wmiobject
PowerShell skriptimiskeskkonnas IIS veebiserveri haldamine
Praktika
- Koosta skript, mis:
- paigaldaks IIS veebiserveri
- Kustutaks Default Web Site
- Looks uue veebilehe, mille füüsiline asukoht oleks C:\www
- Kontrolliks ka eelnevalt kataloogi olemasolu ning vajadusel looks selle
- Koosta skrpit, mis genereeriks veebilehe, mis sisaldaks töötavate protsesside loetelu ja nende ressursikasutusesinfot ja viimast viit kirjet system EventLog'ist
- See skript peab väskendama infot viieminutilise intervalliga
Kaughaldus PowerShelli abil
Teooria
- Running Remote Commands http://technet.microsoft.com/en-us/library/dd819505.aspx
- PowerShell V2 Remoting - a first glimpse http://powershell.com/cs/blogs/tobias/archive/2008/11/06/powershell-v2-remoting-overview.aspx
Praktika
Mida uut tuleb PowerShell 5.0 versioonis
Windows Management Framework 5.0 - http://www.microsoft.com/en-us/download/details.aspx?id=44987 'OneGet' - apt-get powershellile
Find-Package -Name Java -AllVersions
Find-Package -Name Eclipse -MinimumVersion 4.1 -MaximumVersion 4.3
Find-Package -Name Java, Eclipse-kepler, WinRAR | Install-Package
Pakkide allikaid võib lisada, kuid üks on vaikimisi kaasas PS5 preview versiooniga: Chocolatey
Get-Command -Module OneGet
Get-PackageSource
Install-Package git
Update-Package git
Uninstall-Package git
http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference
PowerShell kodutööd
1. Teha skript, mis logib sisse BasicAuth abil kaitstud veebilehele ja laeb sealt alla faili.
Skripti parameetrid on 1. url 2. username [3.password]
Skript küsib parooli kasutajalt, kui seda pole ette antud käsurealt.
Skript laeb alla faili mis on url abil antud.
N2iteurl: http://enos.itcollege.ee/~mernits/basicauth/kala.html Kasutajanimi robot ja parool on kala
Vanad kontrolltööd ja arvestustööd
This category currently contains no pages or media.