Skriptimiskeelte arvestustööd ja kontrolltööd

From EIK wiki

Python/BASH kontrolltöö 19. mai 2015.a.

Loo skript, mis saab käsurealt kolm parameetrit. 1. string 2. sisendfail 3. väljundfail


  • Skript kontrollib, kas sisendfaili saab lugemiseks avada (vastasel juhul exit 1)
  • Skript kontrollib, kas väljundfaili saab kirjutamiseks avada. (vastasel juhul exit 2)
  • Skript kontrollib, kas parameetreid on täpselt kolm (vastasel juhul exit 3)

Skript kirjutab väljundfaili kõik read sisendfailist, mis sisaldavad esimese argumendina antud sõna.

BASH kontrolltöö 12. mai 2015.a.

Loo skript, mis saab käsurealt kolm parameetrit. 1. kasutajanimi 2. Väljundfail 3. kataloog

  • Skript kontrollib, et kasutajanimi on olemas. (vastasel juhul exit 1)
  • Skript kontrollib, kas väljundfaili saab kirjutamiseks avada. (vastasel juhul exit 2)
  • Skript kontrollib, kas parameetreid on täpselt kolm (vastasel juhul exit 3)


Skript kirjutab väljundfaili kõikide failide nimekirja, kuhu esimese parameetrina antud kasutaja saab kirjutada ja mis asuvad kolmanda parameetrina antud kataloogis või selle alamkataloogides.

BASH kontrolltöö 7. aprill 2015.a.

Loo skript, mis saab käsurealt kaks parameetrit. 1. Sisendfail 2. Väljundfail

  • Skript kontrollib, et sisendfail on fail ja loetav. (vastasel juhul exit 1)
  • Skript kontrollib, kas väljundfaili saab kirjutamiseks avada. (vastasel juhul exit 2)
  • Skript kontrollib, kas parameetreid on täpselt kaks (vastasel juhul exit 3)
  • Skript loeb sisendfailist failide ja kataloogide nimekirja (näiteks kujul)
/etc/passwd
/etc/
/var/log
/sedapoleolemas


  • Skript kirjutab väljundfaili failinime ja kas tegu oli failiga (FAIL) või kataloogoga (DIR). Lisaks kirjutab skript väljundfaili faili või kataloogi omaniku. Kui faili/kataloogi ei ole, siis kirjutab (not found). Tulpade eraldajateks on komad. Näiteväljund eelmise näite kohta.
/etc/passwd,FAIL,root
/etc/,DIR,root
/var/log,DIR,root
/sedapoleolemas,not found

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.


Python arvestustöö kaubõppele 31. jaanuar 2015.a.

Loo skript, mis saab kaks käsurea argumenti, sisendfail ja väljundfail.

Sisendfailis on suvaline tekst.

Skript loeb kokku kõik sisendfaili erinevad sõnad ja kirjutab tulemuse väljundfaili kujul.

SÕNA,MITU,PROTSENT


Näiteks failis on neli sõna: siin ei ole kala


Väljund on:

siin,1,0.25
ei,1,0,25
ole,1,0.25
kala,1,0.25


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.