Bash quests 2013: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mernits (talk | contribs)
Created page with '=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…'
 
Mkuusik (talk | contribs)
 
(66 intermediate revisions by 14 users not shown)
Line 5: Line 5:
Queste tuleb pidevalt juurde.
Queste tuleb pidevalt juurde.


=Tunnis lahendatud näited=
[[User:Mernits|Mernits]] 14:26, 29 September 2013 (EEST)
==Esimene==
Teha skript, mis küsib kasutajalt kataloogi nime ja siis väljastab kõik (tavalised) failid/kaustad, mis seal kataloogis asuvad 3p
<source lang=bash>
#!/bin/bash
echo -n "Sisesta kataloogi täispikk tee:"
read KATALOOG
ls "${KATALOOG}"
</source>
Lahendus: [[User:Rohak|Rohak]] 14:28, 29 September 2013 (EEST)
==Teine==
#Teha skript, mis küsib kasutajalt kataloogi nime ja siis väljastab kõik (tavalised) failid/kaustad, mis seal kataloogis asuvad 3p
[[User:Ptomusk|Ptomusk]] 14:29, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
_short_help="`basename $0` [DIRECTORY]"
_long_help="Output the files in the specified directory"
if [ "$1" = '--help' ]; then
        echo $_short_help
        echo $_long_help
        exit 0
elif [ -d "$1" ]; then
find "$1/" -maxdepth 1 -type f
else
echo "No such directory!"
echo $_short_help
exit 1
fi
</source>
==Kolmas==
#Teha skript, mis küsib kasutajalt kataloogi nime ja siis väljastab kõik (tavalised) failid/kaustad, mis seal kataloogis asuvad 3p
[[User:Mmust|Mmust]] 14:28, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
echo "Sisesta kataloogi nime "
read NIMI
$NIMI
cd $NIMI
ls -la
</source>
==Neljas==
[[User:Mernits|Mernits]] 15:28, 29 September 2013 (EEST)
<source lang="bash">
for i in {1..26}; do ping -c1 192.168.6.$i | grep ttl=128 >/dev/null && echo "Masin $i on windowsis" ; done
</source>
==Viies==
Skript peab väljastama õppejõu pangakaardi pin koodi.
[[User:Rohak|Rohak]] 15:36, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
echo {0000..9999}
</source>
[[User:Tliik|Tliik]] 15:37, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
for i in {0000..9999}; do echo $i; done
</source>
[[User:Toerm|Toerm]] 15:37, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
for s in `seq 1 9999`; do
    echo $s
done
</source>
==Kuues==
[[User:Rohak|Rohak]] 15:47, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
#Skritp käsib kasutajal osta ära elevant ja vaatamata sisestusele vastab kõik ütlevad "mida kasutaja ütles", aga osta elevant ära.
echo -n "Osta elevant ära:"
while true; do
read VASTUS
echo -n "Kõik ütlevad $VASTUS, aga osta elevant ära:"
done
</source>
==Seitse==
[[User:Mmust|Mmust]] 15:52, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
#for s in `seq 1 99999`; do
while true; do
echo -n "Tere, osta elevant ära"
read osta
read -p "kõik ütlevad, nii $osta, aga osta elevant ära"
done
</source>
[[User:Tliik|Tliik]] 15:57, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
#Skript ütleb et osta elevant ära, ükskõik mida kasutaja sisestab, siis vastab "Kõik ütlevad $kasutajasisestus", aga osta elevant ära, lõpmatult.
while [ true ]; do
    read -p "Osta elevant ära: " ELEVANT
    echo "Kõik ütlevad nii, et ${ELEVANT}, aga osta elevant ära."
done
</source>
==Kaheksa==
[[User:Tliik|Tliik]] 16:30, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
#Veebiserveris on log fail, kust tuleb leida ühe mustri (Otsi NEVE) alusel üles kõik unikaalsed IP aadressid, milledelt on päringuid tehtud.
grep NEVE /home/student/Desktop/robot.itcollege.ee-access.log | cut -d' ' -f1 | sort | uniq | nslookup | grep 'name = ' | cut -d' ' -f3
</source>
==Kaheksa==
[[User:Mkuusik|Mkuusik]] 16:00, 29 September 2013 (EEST)
<source lang="bash">
#!/bin/bash
echo "osta elevant ära"
while :
do
read
echo "Seda ütlevad kõik aga osta elevant ära"
done
</source>


=Quest 0 - Näide=
=Quest 0 - Näide=
Line 12: Line 155:


Quest lukus (tehtud) [[User:Mernits|Mernits]] 15:04, 24 January 2013 (EET)
Quest lukus (tehtud) [[User:Mernits|Mernits]] 15:04, 24 January 2013 (EET)
=Quest 1 - PATH (Quest lukus!) =
Tee skript, mis lisab käsurealt etteantud kataloogi kasutaja PATH muutujasse, kui kataloog eksisteerib.
Tagastab 0 juhul kui kõik õnnestus.
Tagastab 1 kui kataloogi ei leitud.
Tagastab 2 kui argumentide arv ei klapi.
NB: tagastamine pole ekraanile väljastamine ja argumendi käsurealt ette andmine ei tähenda selle küsimist kasutajalt, näiteks read abil peale skirpi käivitamist. Vaata õppematerjali.
Piia Ploovits A22 https://wiki.itcollege.ee/index.php/User:Pploovit
=Quest 2 - Leiab kas masinas on etteantud pordid lahti või mitte (Quest lukus)=
Teha skript, mis saab argumendina failinime ja kontrollitava masina IP aadressi, ning loeb failist portide nimekirja.
Skript tagastab 0, kui kõik nimekirjas olevad pordid on lahti ja teised pordid kinni
Skript tagastab 1, kui vajalikud pordid on lahti, kuid ka midagi muud on lahti
Skript tagastab 2, kui 1-n vajalikest portidest on kinni
Skript tagastab 3, kui argumentide arv ei sobi
Skript tagastab 4, kui IP aadress pole sobiv
Kontrollib porte vahemikus 1-10000
NB, see sobib ka pythoni kodutööks või arvestusena (kui saadad unikaalse lahenduse enne arvestuse päeva)
Meelis Kurnikov AK31: http://enos.itcollege.ee/~mekurnik/skriptimiskeeled/ports.py
Priit Lume AK51: https://wiki.itcollege.ee/index.php/User:Plume
Lahendus bashis. Andres Elliku A21: https://wiki.itcollege.ee/index.php/User:Aelliku
''' Quest lukus ''' [[User:Mernits|Mernits]] 16:04, 12 February 2013 (EET)
=Quest 3 Lukus - tehtud=
Quest on tehtud!
Loo skript, mis kontrollib kas kasutajal, kes skripti käivitas on õigus kirjutada etteantud kataloogi või mitte.
Kataloogi nimi antakse ette käsurealt.
Skript tagastab 0, kui õigus on olemas.
Skript tagastab 1, kui õigust pole või kataloogi pole (näiteks on tegu failiga)
Chris Liebert A22 https://wiki.itcollege.ee/index.php/User:Cliebert
Quest tehtud [[User:Mernits|Mernits]] 17:50, 3 March 2013 (EET)
Pythonis tehtud:Dineta Mahno A21 https://wiki.itcollege.ee/index.php/User:Dmahno
=Quest 4 - Quest lukus - tehtud!=
Quest on tehtud bashis! [[User:Mernits|Mernits]] 22:31, 3 March 2013 (EET)
Python lahenduse võib veel saata...
Luua skript, mis kontrollib, kas etteantud kasutaja kodukataloogis on faile või katalooge, mis ei kuulu kasutajale.
Leitud failid kirjutatakse väljundisse.
Skript tagastab 0, kui täitmine õnnestus
Skript tagastab 1, kui kasutajat pole
Skript tagastab 2, kui kasutajal pole kodukausta
Muude vigade korral tagastab 3.
Chris Liebert A22 https://wiki.itcollege.ee/index.php/User:Cliebert
Dineta Mahno  A21 https://wiki.itcollege.ee/index.php/User:Dmahno
=Quest 5 - LUKUS! =
Teha skript, mis teeb üks kord sekundis ekraanitõmmise
Skript teeb kogu ekraanist pilditõmmise üks kord sekundis ja nummerdab failid. DATE-1.png DATE-2.png jne
Võib teha pythonis või bashis.
Pildivorming võib olla jpg, png või muu laialt levinud vorming.
Esimesed 3 erinevat lahendust saavad 10p!
Questi võib teha nii bashis, kui pythonis
Quest on lahti alates 09.aprill.2013
Frederick Rang A22 https://wiki.itcollege.ee/index.php/User:Frang#Skriptimiskeeled (bash)
Frederick Rang A22 https://wiki.itcollege.ee/index.php/User:Frang#Skriptimiskeeled (python)
Dineta Mahno A21 https://wiki.itcollege.ee/index.php/User:Dmahno#Python_quest5 (python)

Latest revision as of 23:46, 11 October 2013

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.


Tunnis lahendatud näited

Mernits 14:26, 29 September 2013 (EEST)

Esimene

Teha skript, mis küsib kasutajalt kataloogi nime ja siis väljastab kõik (tavalised) failid/kaustad, mis seal kataloogis asuvad 3p

#!/bin/bash
echo -n "Sisesta kataloogi täispikk tee:"
read KATALOOG
ls "${KATALOOG}"

Lahendus: Rohak 14:28, 29 September 2013 (EEST)

Teine

  1. Teha skript, mis küsib kasutajalt kataloogi nime ja siis väljastab kõik (tavalised) failid/kaustad, mis seal kataloogis asuvad 3p

Ptomusk 14:29, 29 September 2013 (EEST)

#!/bin/bash
_short_help="`basename $0` [DIRECTORY]"
_long_help="Output the files in the specified directory"
if [ "$1" = '--help' ]; then
        echo $_short_help
        echo $_long_help
        exit 0
elif [ -d "$1" ]; then
	find "$1/" -maxdepth 1 -type f
else
	echo "No such directory!"
	echo $_short_help
	exit 1
fi

Kolmas

  1. Teha skript, mis küsib kasutajalt kataloogi nime ja siis väljastab kõik (tavalised) failid/kaustad, mis seal kataloogis asuvad 3p

Mmust 14:28, 29 September 2013 (EEST)

#!/bin/bash
echo "Sisesta kataloogi nime "
read NIMI
$NIMI
cd $NIMI
ls -la

Neljas

Mernits 15:28, 29 September 2013 (EEST)

for i in {1..26}; do ping -c1 192.168.6.$i | grep ttl=128 >/dev/null && echo "Masin $i on windowsis" ; done

Viies

Skript peab väljastama õppejõu pangakaardi pin koodi.

Rohak 15:36, 29 September 2013 (EEST)

#!/bin/bash
echo {0000..9999}

Tliik 15:37, 29 September 2013 (EEST)

#!/bin/bash
for i in {0000..9999}; do echo $i; done

Toerm 15:37, 29 September 2013 (EEST)

#!/bin/bash 
for s in `seq 1 9999`; do
    echo $s 
done

Kuues

Rohak 15:47, 29 September 2013 (EEST)

#!/bin/bash
#Skritp käsib kasutajal osta ära elevant ja vaatamata sisestusele vastab kõik ütlevad "mida kasutaja ütles", aga osta elevant ära.

echo -n "Osta elevant ära:"
while true; do
	read VASTUS
	echo -n "Kõik ütlevad $VASTUS, aga osta elevant ära:"
done


Seitse

Mmust 15:52, 29 September 2013 (EEST)

#!/bin/bash
#for s in `seq 1 99999`; do
while true; do
echo -n "Tere, osta elevant ära"
read osta
read -p "kõik ütlevad, nii $osta, aga osta elevant ära"
done

Tliik 15:57, 29 September 2013 (EEST)

#!/bin/bash
#Skript ütleb et osta elevant ära, ükskõik mida kasutaja sisestab, siis vastab "Kõik ütlevad $kasutajasisestus", aga osta elevant ära, lõpmatult.

while [ true ]; do
    read -p "Osta elevant ära: " ELEVANT
    echo "Kõik ütlevad nii, et ${ELEVANT}, aga osta elevant ära."
done

Kaheksa

Tliik 16:30, 29 September 2013 (EEST)

#!/bin/bash
#Veebiserveris on log fail, kust tuleb leida ühe mustri (Otsi NEVE) alusel üles kõik unikaalsed IP aadressid, milledelt on päringuid tehtud.

grep NEVE /home/student/Desktop/robot.itcollege.ee-access.log | cut -d' ' -f1 | sort | uniq | nslookup | grep 'name = ' | cut -d' ' -f3

Kaheksa

Mkuusik 16:00, 29 September 2013 (EEST)

#!/bin/bash


echo "osta elevant ära"
while :
do
read 
echo "Seda ütlevad kõik aga osta elevant ära"
done

Quest 0 - Näide

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

Lahendus: User:Mernits

Quest lukus (tehtud) Mernits 15:04, 24 January 2013 (EET)


Quest 1 - PATH (Quest lukus!)

Tee skript, mis lisab käsurealt etteantud kataloogi kasutaja PATH muutujasse, kui kataloog eksisteerib.

Tagastab 0 juhul kui kõik õnnestus.

Tagastab 1 kui kataloogi ei leitud.

Tagastab 2 kui argumentide arv ei klapi.

NB: tagastamine pole ekraanile väljastamine ja argumendi käsurealt ette andmine ei tähenda selle küsimist kasutajalt, näiteks read abil peale skirpi käivitamist. Vaata õppematerjali.

Piia Ploovits A22 https://wiki.itcollege.ee/index.php/User:Pploovit

Quest 2 - Leiab kas masinas on etteantud pordid lahti või mitte (Quest lukus)

Teha skript, mis saab argumendina failinime ja kontrollitava masina IP aadressi, ning loeb failist portide nimekirja.

Skript tagastab 0, kui kõik nimekirjas olevad pordid on lahti ja teised pordid kinni

Skript tagastab 1, kui vajalikud pordid on lahti, kuid ka midagi muud on lahti

Skript tagastab 2, kui 1-n vajalikest portidest on kinni

Skript tagastab 3, kui argumentide arv ei sobi

Skript tagastab 4, kui IP aadress pole sobiv


Kontrollib porte vahemikus 1-10000


NB, see sobib ka pythoni kodutööks või arvestusena (kui saadad unikaalse lahenduse enne arvestuse päeva)


Meelis Kurnikov AK31: http://enos.itcollege.ee/~mekurnik/skriptimiskeeled/ports.py


Priit Lume AK51: https://wiki.itcollege.ee/index.php/User:Plume

Lahendus bashis. Andres Elliku A21: https://wiki.itcollege.ee/index.php/User:Aelliku

Quest lukus Mernits 16:04, 12 February 2013 (EET)

Quest 3 Lukus - tehtud

Quest on tehtud!

Loo skript, mis kontrollib kas kasutajal, kes skripti käivitas on õigus kirjutada etteantud kataloogi või mitte.

Kataloogi nimi antakse ette käsurealt.


Skript tagastab 0, kui õigus on olemas.

Skript tagastab 1, kui õigust pole või kataloogi pole (näiteks on tegu failiga)

Chris Liebert A22 https://wiki.itcollege.ee/index.php/User:Cliebert

Quest tehtud Mernits 17:50, 3 March 2013 (EET)

Pythonis tehtud:Dineta Mahno A21 https://wiki.itcollege.ee/index.php/User:Dmahno

Quest 4 - Quest lukus - tehtud!

Quest on tehtud bashis! Mernits 22:31, 3 March 2013 (EET) Python lahenduse võib veel saata...

Luua skript, mis kontrollib, kas etteantud kasutaja kodukataloogis on faile või katalooge, mis ei kuulu kasutajale.

Leitud failid kirjutatakse väljundisse.

Skript tagastab 0, kui täitmine õnnestus

Skript tagastab 1, kui kasutajat pole

Skript tagastab 2, kui kasutajal pole kodukausta

Muude vigade korral tagastab 3.

Chris Liebert A22 https://wiki.itcollege.ee/index.php/User:Cliebert

Dineta Mahno A21 https://wiki.itcollege.ee/index.php/User:Dmahno


Quest 5 - LUKUS!

Teha skript, mis teeb üks kord sekundis ekraanitõmmise

Skript teeb kogu ekraanist pilditõmmise üks kord sekundis ja nummerdab failid. DATE-1.png DATE-2.png jne

Võib teha pythonis või bashis.

Pildivorming võib olla jpg, png või muu laialt levinud vorming.

Esimesed 3 erinevat lahendust saavad 10p!

Questi võib teha nii bashis, kui pythonis

Quest on lahti alates 09.aprill.2013

Frederick Rang A22 https://wiki.itcollege.ee/index.php/User:Frang#Skriptimiskeeled (bash)

Frederick Rang A22 https://wiki.itcollege.ee/index.php/User:Frang#Skriptimiskeeled (python)

Dineta Mahno A21 https://wiki.itcollege.ee/index.php/User:Dmahno#Python_quest5 (python)