Category:Skriptimiskeeled (arhiiv): Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mernits (talk | contribs)
Kkarmo (talk | contribs)
 
(59 intermediate revisions by 4 users not shown)
Line 1: Line 1:
=Skrpitimiskeeled ainekaart=
==Skriptimiskeeled ainekaart==


==Eesmärk==
===Eesmärk===
Õppeaine eesmärgiks on tutvustada õppijatele skriptimiskeelte vajalikkust korduvate haldustegevuste automatiseerimisel ning arendada õppijate oskuseid serverite ja tööjaamade haldamiseks.
Õppeaine eesmärgiks on tutvustada õppijatele skriptimiskeelte vajalikkust korduvate haldustegevuste automatiseerimisel ning arendada õppijate oskuseid serverite ja tööjaamade haldamiseks.


==Lühitutvustus==
===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, skriptimiskeelte pyhton, ruby ja vbscript kasutamist ning Windows-tööjaamade ja –serverite haldamisel kasutatavat skriptimiskeskkonda PowerShell. Õppija omandab aine läbimise käigus enamlevinud srkiptimisvahendite esmase kasutusoskuse ja ülevaate tänapäeval kasutatavatest skriptimisvahenditest.
Õ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==
===Õpiväljundid===
* Õppija mõistab skriptimise kui töövõtte vajadust ning kasutusvaldkondi.
* Õppija mõistab skriptimise kui töövõtte vajadust ning kasutusvaldkondi.
* Õppija teab ja tunneb enimkasutatavaid skriptimiskeeli ja nende kasutamisvõimalusi.
* Õppija teab ja tunneb enimkasutatavaid skriptimiskeeli ja nende kasutamisvõimalusi.
Line 13: Line 13:
* Õppija oskab koostada keerulisemaid skripte kasutades selleks erialast kirjandust ja sotsiaalseid keskkondi
* Õppija oskab koostada keerulisemaid skripte kasutades selleks erialast kirjandust ja sotsiaalseid keskkondi


==Hinde kujunemine==
===Hinde kujunemine===
Arvestuse tulemus kujuneb semestri jooksul tehtud töö baasil. Hindamisele kuuluvad iseseisva töö aruanded ehk skriptid koos dokumentatsiooniga (50% ulatuses) ning osaarvestustööd (50% ulatuses). Osaarvestustööd koosnevad praktilistest arvuti abil lahendatavatest skriptimisülesannetest. Arvestustööd saab teha semestri jooksul või arvestuse päeval.
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 kolmest hinnatavast plokist (Powershell, bash shell, Ruby või python). Igas plokis tuleb õppijal koostada aruanne, mis koosneb juhendist ja enda loodud skriptist. Iseseisva tööna tuleb teha kokku kolm aruannet.
Iseseisev töö koosneb kahest hinnatavast plokist:


* Bash


=Arvestused 20.mai 2014 (neile, kes soovivad arvestuse teha ette ja kellel on kodutöö antud keeles esitatud!)=
* Python (mille võib soovi korral asendada Ruby, Perli või PowerShelliga)


==BASH arvestus 20. mai 2014 (ära tuleb saata 14:00)==
Igas plokis tuleb õppijal koostada aruanne, mis koosneb juhendist ja enda loodud skriptist. Iseseisva tööna tuleb teha kokku kaks aruannet.
Teha skript, mis saab käsurealt kaks või kolm parameetrit. 1. Kasutajanimi 2. Grupi nimi 3. parameeter on valikuline, mille võib soovi korral ära jätta. Parameeteri sisu on failinimi, kuhu kirjutatakse skripti väljund. Kui failinimie pole, siis kirjutatakse ekraanile.


Skript leiab kõik failid selles kataloogis, kus skript käivitati. Failide omanik peab olema käsurealt etteantud kasutaja ja grupp käsurealt etteantud grupp. Leitud failinimedest tuleb arvutada md5 räsi md5sum korralduse abil.
'''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


Väljundfailis on räsi, täispikk failinimi, omanik ja grupp.
[https://docs.google.com/document/d/1d1j-ucJLAfOiwNIpL9CKEUsEbXdVDieHBMFfwJV1h20/edit Arvestuse ülesanne (21.04.2015)]


==Python arvestus 20. mai 2014 (ära tuleb saata 14:00)==
==Üldist==
===Anna teada, mida aines paremaks võiks teha (keelatud pole ka lihtsalt soovitused/kiitused/laitused===


Loo skript, mis genereerib 1000 juhuarvu vahemikus 1..1000 ja kirjutab need faili arvud.txt (iga arv eraldi reale). Seejärel leiab arvude keskmise, suurima ja vähima ja väljastab need ekraanile.
[[Skriptimiskeeled aine muudatuste ideed]]


===Eelmiste voorude tagasiside===


Seejärel leiab skript mitu korda igat arvu failis oli. Näiteks
[[File:Kaugõppe tagasiside koos kommentaaridega 2013 Sügis.pdf]]
1. 0 arvu
2. 2 arvu
3. 0 arvu
1000. 1 arvu


==Powershell arvestus 20. mai 2014 (ära tuleb saata 14:00)==
===GIT===


Loo skript, mis saab 0-1 käsurea parameetrit. Parameeter on kasutajanimi.
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.
Skript leiab üles kõik protsessid, mis kuuluvad kasutajale, kelle nimi on ette antud käsurea parameetris. Kui käsurea
parameetrit polnud, siis kasutatakse selle kasutaja andmeid, kes skripti käivitas.


==Anna teada, mida aines paremaks võiks teha (keelatud pole ka lihtsalt soovitused/kiitused/laitused==
===Loengusalvestised 2015 sügis kaugõppele===
[[Skriptimiskeeled aine muudatuste ideed]]
 
==Eelmiste voorude tagasiside==
[https://echo360.e-ope.ee/ess/portal/section/1801900e-9170-42fa-95ef-e192827d102a Üldine link loengusalvestistele]


[[File:Kaugõppe tagasiside koos kommentaaridega 2013 Sügis.pdf]]
===Varasemad salvestised===


==Loengusalvestused 2013 sügis kaugõppele==
[https://echo360.e-ope.ee/ess/portal/section/a7bec2d8-1c58-4228-81f0-38cc032a0d21 Üldine link 2014 sügise kaugõppe loengusalvestistele]


http://echo360.e-ope.ee/ess/portal/section/2e8a9743-7b1f-43e3-85e0-6b52cbd8a94f
*[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=
==Bash==


[http://enos.itcollege.ee/~mernits/skriptimine/bash/src/bash-basics.html Bash loengumaterjal]
[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]




[https://echo360.e-ope.ee/ess/portal/section/f10b0f2d-dc40-4a4b-9416-705cf702e7ba Loengute videod 2014 kevad]


[http://enos.itcollege.ee/~mernits/osadmin/kt/enesetest.pdf Enesetest aine bash osa eelduse kontrolliks]
[http://enos.itcollege.ee/~mernits/osadmin/kt/enesetest.pdf Enesetest aine Bash osa eelduse kontrolliks]


[http://tldp.org/LDP/abs/html/ Materjal, mille läbitöötamine asendab BASH loengutes kaasatöötamist]
[http://tldp.org/LDP/abs/html/ Materjal, mille läbitöötamine asendab Bash loengutes kaasatöötamist]


[http://echo360.e-uni.ee/ess/portal/section/c99546d5-d96d-4407-86d1-f74297bdfdd7 Loengute ja praktikumide salvestused -- eelmiste aastate omad]
[http://echo360.e-uni.ee/ess/portal/section/c99546d5-d96d-4407-86d1-f74297bdfdd7 Loengute ja praktikumide salvestused -- eelmiste aastate omad]




[http://echo360.e-uni.ee/ess/echo/presentation/a41829f1-e5f2-4778-8fc1-23337f9f0646 Esimene bash loeng - sissejuhatus] päevaõppele 05.02.2013
[http://echo360.e-uni.ee/ess/echo/presentation/a41829f1-e5f2-4778-8fc1-23337f9f0646 Esimene Bash loeng - sissejuhatus] päevaõppele 05.02.2013




Line 79: Line 93:
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öö.
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==
===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


===Ülesanne - failiteenus===
====Bash Kodutöö 1 - failiteenus====
Looge skript, mis jagaks etteantud grupile uue kausta
Looge skript, mis jagaks etteantud grupile uue kausta
<pre>
<pre>
Line 100: 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
Line 105: Line 124:
[[Bash_n%C3%A4ide | Tunnis antud näide ]]
[[Bash_n%C3%A4ide | Tunnis antud näide ]]


===Ülesanne - veebihosting/veebiteenus===
====Bash kodutöö 2 - veebihosting/veebiteenus====


Looge skript, mis looks uue veebkodu
Looge skript, mis looks uue veebkodu
Line 121: Line 140:
'''The only way to really learn scripting is to write scripts'''
'''The only way to really learn scripting is to write scripts'''


===Praktika===
====Praktika====


* Esimeses praktikumis installeeritakse Ubuntu töölaud ja luuakse lihtsamaid skripte
* Esimeses praktikumis installeeritakse Ubuntu töölaud ja luuakse lihtsamaid skripte
Line 127: Line 146:




==Arvestus 22.aprill rühm A22==
===Tunnis antud ülesanded (Bash)===
 
Teha skript, mis saab käsurealt lingi, näiteks http://www.itcollege.ee ning laeb seal oleva veebilehe alla, ning kirjutab faili kõik seal leiduvad unikaalsed sõnad.
 
==Arvestus 30.nov kaugõpe==
<pre>
<pre>
Teha skript, mis loeb käsurealt 1..n argumenti (1..n IP aadressi)
Teha skript, mis loeb käsurealt ip aadressi ja nime,
 
ning lisab loetud andmed /etc/hosts faili (5p, 3p, 2p)
Kui argumente pole siis väljastab veakoodi 1 (1p)
 
Skript väljastab eraldi real kõik käsurea argumendid. 2p
 
Skript kontrollib, kas argumentidena antud IP aadresse saab pingida.
 
 
Aadressid, mis vastavad tuleb kirjutada faili ok.txt ja need, mis ei vast kirjuta faili nok.txt
 
Kui faile pole, siis väljastada teade, et vastav X.txt fail puudub, loon faili(d). 2p
 
Failide omanikuks tuleb seada student ja grupiks audio 1p
 
Skript seab failiõigused selliselt, et omanik saab lugeda ja kirjutada,  
grupp saab lugeda ja kirjutada, teised kasutajad ei saa midagi teha 1p
 
Faili ok.txt kirjutamine 4p
Faili nok.txt kirjutamine 4p
 
 
</pre>
</pre>


Line 161: Line 156:
[[Skriptimiskeeled aine aruanded 2010 sügis]]
[[Skriptimiskeeled aine aruanded 2010 sügis]]


===Teemad===
====Teemad====


=Python=
==Python==


[http://enos.itcollege.ee/~mernits/python/python-algkursus-v6-2012-fall.odp Loengumaterjal ODP vormingus]
[http://enos.itcollege.ee/~mernits/python/python-algkursus-v6-2012-fall.odp Loengumaterjal ODP vormingus]
Line 218: Line 213:




===Python kodutööd===


Python kodutöö saamiseks saada e-kiri õppejõule ja subjektiks pane Python kodutöö küsimine.


==Arvestus 22.aprill rühm A22==
==PowerShell==
 
Teha skript, mis saab käsurealt lingi, näiteks http://www.itcollege.ee ning laeb seal oleva veebilehe alla, ning kirjutab faili kõik seal leiduvad unikaalsed sõnad (lõikav välja muud märgid peale tähtede)
==Kodutöö või arvestuse python skript (neile, kes esitavad selle kuni 28.mai.2013 enne arvestuse algust)==
 
Looge skript, mis teeb päringuid esimese argumendina antud veebilehe pihta ja vahetab iga päringuga browser stringi, millede nimekiri on ette antud failis data.txt
 


Failinimi olgu kujul p2ring.eesnimi.perenimi.py, ehk kirjutad sinna oma nime
Paigaldage Windows Management Framework 5.0 Preview  https://www.microsoft.com/en-us/download/details.aspx?id=46889


Näiteks: ./p2ring.margus.ernits.py http://wiki.itcollege.ee/


ja data näitesisu:
===[[Skriptimiskeeled: powershelli kodutööd 2012, kevad, päevaõpe]]===
<pre>
Mozilla (libwhisker/2.4)
Mozilla (Mozilla@somewhere.com)
Mozilla 4.0(compatible; BotSeer/1.0; +http://botseer.ist.psu.edu)
Mozilla/1.1 (compatible; MSPIE 2.0; Windows CE)
Mozilla/1.10 [en] (Compatible; RISC OS 3.70; Oregano 1.10)
Mozilla/1.22 (compatible; MSIE 2.0d; Windows NT)
Mozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0)
Mozilla/2.0 
Mozilla/2.0 (compatible; AOL 3.0; Mac_PowerPC)
</pre>
 
Veatöötlis: Kui faili ei ole või seda ei saa avada, siis skripti väljumiskood (exit code) on 1.
 
Hindid: urllib2 urllib changing user agent
 
 
Skript saatke õppejõu (Margus Ernits) e-posti aadressile margus.ernitsÄTTitcollege.ee.
 
NB: Sama ülesannet võib esitada bash arvestustööna, kui kodutöö on olemas.
 
=PowerShell=
==[[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 2012, kevad, päevaõpeõpe]]
* [[PowerShelli näidisteemad kodutöödeks 2010, sügis, kaugõ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/
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==
* Õpiobjekt: PowerShell skriptimiskeele ja -keskkonna tutvustus http://enos.itcollege.ee/~mernits/Powershell1/
* Õpiobjekt: PowerShell skriptimiskeele ja -keskkonna tutvustus http://enos.itcollege.ee/~mernits/Powershell1/
* Hea algajale: http://technet.microsoft.com/en-US/scriptcenter/dd742419.aspx
* Hea algajale: http://technet.microsoft.com/en-US/scriptcenter/dd742419.aspx


==Tutvustus==
===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 282: 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 http://www.hanselman.com/blog/SigningPowerShellScripts.aspx
** Signing PowerShell Scripts http://www.hanselman.com/blog/SigningPowerShellScripts.aspx http://www.hanselman.com/blog/SigningPowerShellScripts.aspx
Line 297: 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 304: 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/


===Tunni näited===
====Tunni näited====


[[Tunninäide: 7.02.2012, Powershell]]
[[Tunninäide: 7.02.2012, Powershell]]


===Praktika===
====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 333: 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 340: 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 356: Line 323:
** See skript peab väskendama infot viieminutilise intervalliga
** See skript peab väskendama infot viieminutilise intervalliga


* Meekondade loodud skriptid:
** [[Protsessiinfo veebilehe genereerimise ja IIS serveri paigaldamise skript: Meeskond "Urmo Laaneots, Oliver Kilk, Karet Rikko, Erko Umal"]]
** [[Protsessiinfo veebilehe genereerimise ja IIS serveri paigaldamise skript: Meeskond "Jõukest 2.0"]]


==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=
==Mida uut tuleb PowerShell 5.0 versioonis==


Windows Management Framework 5.0 - http://www.microsoft.com/en-us/download/details.aspx?id=42316
Windows Management Framework 5.0 - http://www.microsoft.com/en-us/download/details.aspx?id=44987
'OneGet' - apt-get powershellile


'OneGet' - apt-get powershellile


http://foxdeploy.com/2014/04/03/powershell-version-5-whats-new/




Line 394: Line 358:
http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference
http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference


=PowerShell kodutööd=
==PowerShell kodutööd==


1. Teha skript, mis logib sisse BasicAuth abil kaitstud veebilehele ja laeb sealt alla faili.
1. Teha skript, mis logib sisse BasicAuth abil kaitstud veebilehele ja laeb sealt alla faili.
Line 404: Line 368:
Skript laeb alla faili mis on url abil antud.
Skript laeb alla faili mis on url abil antud.


=Arvestus kaugõppele 2012 jaanuar=
==Python==
Kasuta oma kodutööd ja töötle isikukoode, mida loed järgmisest failist
http://lauri.vosandi.eu/python/isikukoodid.txt
Kirjuta skript, mis leiab kõige vanema inimese ja kõige noorema inimese.
NB: See isikukood peab olema korrektne


Lahendus saada aadressile margus.ernits@itcollege.ee - Subjekt: [skriptimine]
N2iteurl: http://enos.itcollege.ee/~mernits/basicauth/kala.html Kasutajanimi robot ja parool on kala


==PowerShell==
Loo skript, mis kopeerib etteantud lähtekausta sisu rekrusiivselt etteantud sihtkausta.


* Kui sihtkaust puudub see luuakse.
==Vanad kontrolltööd ja arvestustööd==
* Kui kaust on olemas ja seal on faile ning kaustu, siis kirjutatakse üle ainult need failid, mille suurus sihtkaustas on erinev lähtekaustas olevast faili suurusest ning kui alamkaustad puuduvad, need luuakse.
* Lisaks on skriptil parameeter -Kustuta, mille kasutamisel kustutatakse sihtkaustast failid, mida lähtekaustas ei ole.


Lahendus saada aadressile heiki.tahis@eesti.ee - Subjekt: [skriptimine]
[[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):

  1. töötab (st teeb seda, mida vaja)
  2. on loetav
  3. on hästi kommenteeritud
  4. on trepitud (visuaalselt atraktiivne)
  5. on optimeeritud (kood, ressurss, õigused)
  6. annab inimloetava väljundi (sh progressi-indikaatorid)
  7. annab mõistliku väljumiskoodi (exit code)
  8. on skriptitav (väljumiskood + võimalus käivitada ilma interaktiivsuseta)
  9. on keskkonnateadlik (ei eelda, et ta tingimata nt Ubuntu 14.04 peal käivitatakse)
  10. on veakindel (ei eelda, et kasutaja alati kõik õigesti sisestab või et kõik vajalikud pakid juba paigaldatud on)
  11. kasutab muutujaid (ei ole nö hardcoded parameetreid)
  12. 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

Bash

Bash loengumaterjal

Loengute videod 2015 kevad


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

Failiserveri loeng

Veebiserveri loeng

Kes jõuab teeb enne konfiguratsioonist koopia ja teeb muudatused koopiasse. Koopiat testitakse testparm korraldusega ja kopeeritakse alles seejäral fail üle

Tunnis antud näide

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

Loengumaterjal ODP vormingus

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‎

#!/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 arvestusülesanne 2011, sügis, kaugõpe

PowerShell scriptimiskeele tutvustus, peamised kasutatavad käsud

Tutvustus


PowerShelli paigaldus

PowerShelli seaded

  • 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

Muutujad ja massiivid

If, kordused ja konveierid

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


Näited

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

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 näited

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

Skriptimiskeelte arvestustööd ja kontrolltööd

This category currently contains no pages or media.