Category:Skriptimiskeeled (arhiiv): Difference between revisions
Line 175: | Line 175: | ||
/kama/index.html,Siin ei ole kama | /kama/index.html,Siin ei ole kama | ||
== | ==Bash arvestus 31. jaanuar 2015.a. kaugõpe== | ||
Loo skript, mis saab viis käsurea parameetrit. 1. kasutajanimi, 2. failinimi, 3. grupinimi, 4. kataloogi nimi, 5. pakinimi | Loo skript, mis saab viis käsurea parameetrit. 1. kasutajanimi, 2. failinimi, 3. grupinimi, 4. kataloogi nimi, 5. pakinimi | ||
Revision as of 14:12, 31 January 2015
Skrpitimiskeeled 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, 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.
Õ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 osaarvestustööd (60% ulatuses). Osaarvestustööd koosnevad praktilistest arvuti abil lahendatavatest skriptimisülesannetest. Arvestustööd saab teha semestri jooksul või arvestuse päeval.
Iseseisev töö koosneb kolmest hinnatavast plokist: Powershell, bash shell, python (Soovi korral võib ühe keeltest asendada kas ruby, perl või mõne muu keelega kokkuleppel õppejõuga). Igas plokis tuleb õppijal koostada aruanne, mis koosneb juhendist ja enda loodud skriptist. Iseseisva tööna tuleb teha kokku kolm aruannet.
Ü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
Loengusalvestused 2014 sügis kaugõppele
Üldine link: https://echo360.e-ope.ee/ess/portal/section/a7bec2d8-1c58-4228-81f0-38cc032a0d21
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-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
Ülesanne - 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
Ülesanne - 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
Arvestus 18.oktoober kaugõpe
Loo skript, mis laeb etteantud asukohast alla ühe faili ja kui fail on gz|tar, siis pakib vastava faili lahti teise parameetrina antud kausta (kui kausta pole, siis luuakse). Kui skriptil on kolmas parameeter, siis sätib kausta omanikuks kolmanda parameetri väärtuse ja kui skriptil on neljas parameeter, siis sätib kausta grupiks neljanda parameetri. Skript peab kontrollima, et käivitatakse root õigustes.
./skript http://enos.itcollege.ee/~mernits/a/kala kaust kasutajanimi grupp
http://enos.itcollege.ee/~mernits/a/kala
http://enos.itcollege.ee/~mernits/a/kala2
Arvestus 7.november kaugõpe
NB: seda saab lahendada siis, kui bash kodutööd (failiteenus, veebiteenus või õppejõuga kokkulepitud kodutöö on saadetud). Lahendusi ootan 14:00-ks
Loo skript, mis saab käsurealt 2 parameetrit 1. kasutajanimi 2. failinimi
Skript peab kontrollima, et oleks kaks parameetrit, lisaks kasutaja peab olemas olema ja fail loetav. Kui tingimused pole täidetud, siis tuleb kasutajat teavitada ja väljuda veakoodiga 1.
Teise parameetrina antud failinimes on failide ja kataloogide nimekiri iga kirje eraldi real, nagu näiteks:
/var/kala /var/kala/kala.txt /var/kala/kala2.txt
Skript sätib kõikide failide omanikuks kasutaja, mis anti esimese parameetrina. Kataloogide puhul ei tohi omaniku muuta. St näites on esimene rida ilmselt kataloog (seda tuleb ise testida -d abil näiteks), siis esimese rea puhul ei tehta midagi.
Kui faili/kataloogi ei ole, siis tuleb vastav fail/kataloog ise tekitada. Kui rea lõpus on / siis tuleb teha kataloog (kui pole) ja kui rida ei lõpe / märgiga siis tuleb luua fail, kui seda pole. Kui skript ise loob faile/katalooge, siis omanikuks/grupiks on käsurea esimene parameeter.
Arvestus 8.november kaugõpe
Loo skript, mis saab kaks käsurea parameetrit. 1. kasutajanimi 2. kausta nimi. Kui kasutajat/kausta ei ole või on vale arv parameetreid, siis tuleb töö katkestada veakoodiga 1.
Skript leiab teise käsurea parameetrina antud kasutast kõik kasutajale kuuluvad failid ja teeb nendele sümlingid, kus originaalfailinimele on ette lisatud kasutajanimi.
Näiteks kasut oli /var ja seal oli kasutale audio kuuluv fail /var/kala.txt, siis luuakse sümlink /var/audiokala.txt, mis viitab failile /var/kala.txt-le.
Lisaks tehakse igale kasutajale kuuluvale failile veel teine sümlink, kus failinime ette on liidetud faili md5 räsi.
Näiteks /var/kala.txt-le mille sees on 000 viitab räsi /var/23ebe88c0224f4f4fc0b608216e98735kala.txt
Ülesande tekst pange skriptile kaasa. Skript tuleb saata enne 14:00-i
Arvestus 29.november kaugõpe
Loo skript, mis saab kaks käsurea parameetrit. 1. Serveri nimi või IP aadress, 2. failinimi, kus sees on URL ja otsitav string.
Skript teeb käsurea parameeteriga antud serveri pihta GET päringuid, mis on teise argumendina antud failis ja otsib vastusena saadud lehelt samas failis antud otsitavat stringi.
Kui string leitakse kirjutataks väljundisse:
SERVER,URL,otsitavstring,kellaaeg (aasta, kuu, päev, tund, minut, sekund), OK või NOK
näitefail:
/index.html,itcollege.ee
/kama/index.html,Siin ei ole kama
Bash arvestus 31. jaanuar 2015.a. kaugõpe
Loo skript, mis saab viis käsurea parameetrit. 1. kasutajanimi, 2. failinimi, 3. grupinimi, 4. kataloogi nimi, 5. pakinimi
1. Skript kontrollib, kas kasutaja on olemas. Kui pole siis exit 1
2. Skript kontrollib, kas grupp on olemas. Kui pole, siis loob
3. Skript kontrollib, kas käsurealt antud failinimi on olemas, kui pole, siis loob. Skript määrab faili kasutajaks antud kasutaja ja grupiks antud grupi
4. Skript kontrollib, kas antud kataloog on olemas ja kui on, siis kopeerib /var/log/ kaustast kõik .log laiendiga failid sinna kausta
5. Skript kontrollib, kas antud pakk on paigaldatud ja ütleb kasutajale, kas pakk on paigaldatud või ei ole.
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()
Arvestustöö neile, kellel python kodutöö on saadetud. Arvestus tuleb saata hiljemalt esmaspäeval 22.detsembril
Loo skript, mis saab kaks käsurea argumenti, sisendfail ja väljundfail.
Sisendfailis on suvaline tekst.
Skript loeb kokku kõikide sisendfailis olnud tähtede esinemissageduse ja kirjutab selle väljundisse kujul.
TÄHT,MITU_OLI,PROTSENT kogu tähtede arvust
Näiteks sisendfail sisaldab:
Siin ei ole kala
Väljundfail:
s,1,7.6923077 i,3,23.0769231 n,1,7.6923077 e,2,15.3846154 o,1,7.6923077 l,2,15.3846154 k,1,7.6923077 a,2,15.3846154
Kui skriptil on vale arv parameetreid või skript ei saa faile avada sobivaks operatsiooniks või faili kirjutada/lugeda, siis tuleb tagastada veakood sys.exit(X). Veakoodid valid ja dokumenteerid ise.
Näidiskodutöö neile, kes ise teemat ei leidnud ja õppejõult ei saanud
Skriptil on kaks parameetrit.
1. sisendfaili nimi
2. väljundfaili nimi
Skript kontrollib, et ette oleks antud kaks parameetrit ja sisendfailist saab lugeda ja väljundfaili saab kirjutada.
Sisendfailis on komadega eraldatud 3 tulpa
1. URL,kasutajanmi,parool,otsitav string
Näiteks
http://enos.itcollege.ee,robot,kala,Server http://enos.itcollege.ee/~mernits/basicauth/kala.html,robot,kala,SIIN EI OLE KALA http://robot.itcollege.ee/kala.html,,,KALA
Kui server nõuab basic autentimist, siis kasutad antud kasutajanime ja parooli. Kui server ei nõua autentimist, siis kasutajanime ja parooli ei saadeta.
Kui kasutajanimi ja parool puuduvad, siis kasutajanime ja parooli ei saadeta. (kasutajanimi ja parool ei pea olema kirjas)
Skript teeb päringu iga sisendfaili rea kohta ja kirjutab väljundfaili kujul:
URL,kuupäev-kellaaeg kujul (AAASTA-KUU-PÄEV TUNNID:MINUTID:SEKUNDID),kasutajanimi,parool,otsitav string,OK
Kui päringu vastuses oli otsitav string ja rea:
URL,kuupäev-kellaaeg kujul (AAASTA-KUU-PÄEV TUNNID:MINUTID:SEKUNDID),kasutajanimi,parool,otsitav string,NOK
Kui otsitav string puudus, või kasutajanimi parool oli vale või server ei vastanud (ehk kõik ülejäänud juhud, kui otsitavat stringi ei leitud)
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
Näiteks: ./p2ring.margus.ernits.py http://wiki.itcollege.ee/
ja data näitesisu:
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)
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
Paigaldage Windows Management Framework 5.0 Preview http://www.microsoft.com/en-us/download/details.aspx?id=44987
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
This category currently contains no pages or media.