Bash quests: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Msuursal (talk | contribs)
Skangsep (talk | contribs)
Line 85: Line 85:
Lahendus: [[User:Krikko]] - parandatud
Lahendus: [[User:Krikko]] - parandatud


Lahendus: [[User:Skangsep]] - Skript peab tegema exit 0 või 1 ... echoda pole vaja
Lahendus: [[User:Skangsep]] -Täiendatud.  Skript peab tegema exit 0 või 1 ... echoda pole vaja
 
parandatud


=Quest 6=
=Quest 6=

Revision as of 10:50, 16 May 2011

Sissejuhatus

Bash quests annab võimaluse teha bash skriptimise kodutööd ka neile, kellel teemat pole. Skript tuleb panna Tudengi enda wiki lehele. Punktid saab esimene, kes antud questi täies mahus valmis sai. Kui lahendus pole rahuldav saab punktid järgmine OK lahenduse looja.

Kui quest valmis, siis pane link questi juurde (nagu näites)

Queste tuleb pidevalt juurde.

Quest 0 - Näide

Teha skript, mis ei tee midagi asjalikku, kuid väljasta sõna BÖÖÖ

Lahendus: User:Mernits

Quest lukus (tehtud) Mernits 10:36, 10 May 2011 (EEST)

Quest 1 - Leia suured kaustad oma kodukataloogist

Probleem: Kodukaustast on vaja leida suured kataloogid ja teada, palju nendele ruumu kulub.

Luua skript suuredkaustad.sh

Väljasta kataloogid suuremad kõige alla kujul:

20MB Allalaadimised

100MB Dokumendid

hint: du -s * | sort -nr


Lahendus : Katrin Kukk

Quest lukus ja tehtud Mernits 16:27, 10 May 2011 (EEST)

Quest 2

Teha skript, mis taastab poolelijäänud tarkvarapaigalduse (apt-get baasil)

Kui näiteks kasutaja tahab midagi installeerida ja talle öeldakse, et eelmine install jäi pooleli (vool läks ära või mis iganes), siis viidaks installeerimine/konfigureerimine lõpuni.

Lahendus: User:Hvosujal

Quest lukus (tehtud) Mernits 13:37, 10 May 2011 (EEST)

Quest 3

Teha skript, mis eemaldab vanad kernelid (jätab alles kaks viimast). Tulemuseks on grub2 menüüs näha kahe viimase kerneli ridu ja vanade kernelite arvelt hoitakse kettaruumi kokku.

Lahendus: User:otuur

Lahendus: User:Metamm - Parandatud 11.05 16:20

  Rpm eemaldust kasutades ubuntu 10.10'ga saab teate "head: unrecognized option '--1'"
  peale seda teavitatakse, kasutajat, et skript kustutas kõik kernelid peale kahe viimase, ometi seda ei toimunud. Dpkg eemaldus toimib.
  Olle Tuur 13.05.2011 21:38

Quest 4

Teha skript, mis ühendab lahti kõik kettajaod/saalealad etteantud kettalt ja kustutab partitsioonid sellelt kettalt.

Skript peab kasutajat hoiatama, et eemaldatakse see ja too kettajagu.

Skript annab vea, kui lahtiühendamine ei õnnestu.

Skript kontrollib, kas kasutajal on piisavalt õiguseid.


Käivitamine: trash.sh <kettas>

näiteks: trash.sh /dev/sdb

Lahendus: User:Uluuk

Quest lukus ja tehtud Mernits 12:12, 12 May 2011 (EEST)

Quest 5

Teha shell funktsioon, mis kontrollib faili olemasolu ja sellele antud õiguseid

Näiteks on fail rwxrwxrwx /var/kala.txt

funktsioon välja kutsudes argumentidega /var/kala.txt 777 tagastatakse 0 Teistel juhtudel: 1 - faili pole 2 - omanikul on valed õigused 3 - grupil on valed õigused 4 - teistel kasutajatel on valed õigused

Lahendus: User:Krikko - parandatud

Lahendus: User:Skangsep -Täiendatud. Skript peab tegema exit 0 või 1 ... echoda pole vaja

Quest 6

Teha skript save-alias, mis töötab nagu käsk alias, kuid salvestab loodud aliase .bashrc faili ja sourceb .bashrc faili.


Juhtus, et sai valmis: Kkalder

Quest lukus (tehtud) Mernits 12:36, 10 May 2011 (EEST)

Quest 7

Looge skript mis lisab kasutaja nimetatud gruppi.

Skript peab kontrollima kas grupp on juba olemas, vajadusel grupi looma.

Skript peab kontrollima mitte ainult lokaalseid gruppe vaid ka globaalseid (LDAP).

Skript peab kontrollima ka seda, kas kasutaja on olemas, vajadusel küsib kas kasutaja luua või mitte.

nt. ./att-to-group.sh kasutajanimi grupinimi

Lahendus: User:Mlehari

Kommentaar: usermod -g $GRUPP $KASUTAJA &> /dev/null -G -a võiks olla

Mernits 12:16, 12 May 2011 (EEST)

Täiendused tehtud! --Mlehari 10:24, 13 May 2011 (EEST)

Quest 8

Luua skript, mis otsiks etteantud kataloogist ühesuguseid faile. Failide võrdlemine võiks toimuda md5sum tasandil. Loodav skript peaks olema suuteline leidma kõikide ühesuguste failide asukoha ja kuvama ka nende nimed.


Näideks failidel võivad olla erinevad nimed, kuid sama sisu :

fca209683890bb2a02c60535ca82f920 joujou

fca209683890bb2a02c60535ca82f920 tere

fca209683890bb2a02c60535ca82f920 hello

fca209683890bb2a02c60535ca82f920 asd

Lahendus: User:Vkolesni

Quest tehtud Mernits 12:19, 12 May 2011 (EEST)

Quest 9 Kasutajanime küsimine ja faili salvestamine

Teha skript, mis küsib kasutajanime ja salvestab selle tekstifaili /var/tmp/username

Peale nime küsimist küsib skript kinnitust, et nimi on õige.

Skript kirjutab eelneva faili üle (kui ei saa üle kirjutada, siis annab vea)

Lahendus: User:okilk


Quest 10 - Keerukam - Mysql varukoopia tegemise skript (koos installiskriptiga)

NB: seda skripti võivad teha 3 inimest, kui iga inimene teeb ühe allosa.

Taust: on varundusarvuti ja mysql andmebaasi arvuti. Andmebaasi arvutis töötab mysql server, mille külge otse üle võrgu ühenduda ei saa. Andmevaasist on vaja teha varukoopiaid, mida igapäevalselt kopeeritakse varundusserverisse. Varundusserver algatab kopeerimise ja autentimine käib võtmete abil.


Skript koosneb kolmest osast.

  • Skript, mis on mysql serveris ja käivitatakse cron abil. Skript teeb mydqldump -A ... käsuga koopia /var/varukoopiad kausta ja failinimega <DATE>-mysql-<masinanimi>.sql.gz - seega sisaldab kuupäeva ja masina nime, ning pakitakse kokku.
  • Teine skript kopeerib andmebaasiserverist varukoopiad varundusserverisse ja kustutab andmebaasiserverist varukoopiad, mis on vanemad, kui üks kuu
  • Kolmas skript on installatsiooniskript. See küsib andmebaasiserveri nime/parooli ja mysql root parooli.

Skript kopeerib esimese skripti andmebaasiserverisse ja seadistab sealse cron-i seda regulaarselt käivitama. Skript seadistab varundusserveri cron-i regulaarselt käivitama kopeerimise skripti.

Quest 11 - Skript paki installi kontrolliks

Teha skript, mis kontrollib, kas etteantud tarkvarapakk on installeeritud. Kui on installeeritud, siis tagastab 0 ja vastasel juhul 1.

is_installed.sh <pakinimi>

User:ikrustok

Väikest mööndustega on skript OK (Kui keel on Eesti, siis skript ei toimi. Skripti algusesse export LC_ALL=C oleks hea)

Quest tehtud Mernits 13:01, 12 May 2011 (EEST)

Quest 12 kasutaja/grupi olemasolu testimine

Teha skriptid is_user.sh is_group.sh mis kontrollivad, kas kasutaja või grupp eksisteerib.

is_user.sh <username>

is_group.sh <username>

Skriptid tagastavad 0, kui kasutaja/grupp on olemas ja 1 kui kasutajat/gruppi pole.

Lahendus : User:Vvinogra

Quest tehtud Mernits 12:29, 12 May 2011 (EEST)

Quest 13 - kas kasutaja kuulub gruppi?

Teha skript user_in_group.sh mis kontrollib, kas etteantud kasutaja kuulub etteantud gruppi.

Tagastab 0, kui kuulub ja 1 kui ei kuulu.

user_in_group.sh <kasutaja> <grupp>

Lahendus: User:Amill - lahendus OK Mernits 12:55, 12 May 2011 (EEST)

Lahendus: User:Skullara - lahendus OK - kuna leitud teisest lahendusest viga, siis lähevad punktid kirja... Mernits 22:34, 12 May 2011 (EEST)

Quest lukus Mernits 12:55, 12 May 2011 (EEST)

Quest 14 IP aliase loomine ja salvestamine

Teha skript, mis loob ubuntu serverile IP aliase ja salvestab selle.


add_ip.sh <IP aadress>

Skript teeb võrgule restardi ja kontrollib, kas IP vastab. (enne võiks pingida, et ip ei vastaks)

Lahendus: User:trohumet

Quest 15 - IP aliase kontroll

Skript kontrollib, kas Ubuntu serveris on seadistatud etteantud IP alias


is_ip_alias.sh <IP aadress>

return 0 - alias olemas

return 1 - aliast pole

Lahendus: User:rsepp

Quest 16 - Osta elevant ära

Teha programm, mis käivitamisel paku kasutajale "osta elevant ära" ja ootaks kasutaja sisendit. Ükskõik mida kasutaja sisestab ütleb skript "Seda ütlevad kõik, aga osta elevant ära" ja nii lõpmatuseni.

Lahendus: User:skullara

Quest tehtud Mernits 14:21, 12 May 2011 (EEST)

Quest 17 - Kas serveris on piisavalt mälu

Teha skript, mis kontrollib, kas servers on piisavalt operatiivmälu (näiteks mõne teenuse installi skript võiks seda teha)

./ram.sh <mälu MB>

./ram.sh 512

Väljund: exit 0 - mälu on piisavalt

exit 1 - mälu pole piisavalt

Lahendus : User:ttoppi

Quest 18

Tuleb tekitada skript, mis suunaks kasutaja viimati kasutatud failid nende viimase muutmise kuupäeva järgi kaustadesse.


Skript peab sisaldama: viite erinevat kausta.

Skript peab tegema seda toimingut iga 2 päeva tagant ja teavitama kasutajat sellest, et failid on ümber jagatud.

Skript peab peale failide sorteerimist ütlema mitu faili mingisse kausta tõsteti.


Kaustadesse tuleb failid sorteerida järgmiselt: esimesse kausta peavad minema failid mida on viimati muudetud vähem kui 2 päeva tagasi, teisse kausta failid mis on muudetud 2-7 päeva tagasi, kolmandasse failid mis on 8-14 päeva tagasi muudetud, neljandasse kausta 15-29 päeva tagasi muudetud failid ja viiendaks 30 päeva ning vanemad failid mis on muudetud.

Lahendus: User:Iambos

Quest 19

Kasutaja saab määrata mis faile otsitakse (.torrent; .avi või mkv vmt.) kogusüsteemist. Kui failid on leitud peab skript kasutajale teada andma millised on failide nime.


Skript peab leidma kõik kasutaja poolt sisestatud lõpuga failid.

Skript peab failid ära nummerdama ja kasutajale nende nimesid näitama.

Skript peab võimaldama kasutajal valida numbritega failid mida soovib kustutada (Näiteks: 1-3, 9, 12, 19-20). Peab toimima valiku võimalus näiteks: 15-19

Skript peab kontrollima kas kasutajal on õigused faile kustutada. Kui õigused puuduvad tuleb anda vea teade.

Skript peab peale kasutaja poolt valitud numbreid väljastama uuesti failide nimed mis on valitud ja küsima kas valitud failid on õiged. (kui on õiged peab sisestama 0 , kui valed siis 1)

Skript peab peale failide kustutamist väljastama teate, et failid on kustutatud.

Lahendus: User:Msuursal

Quest 20