Bash quests 2013: Difference between revisions
(24 intermediate revisions by 7 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= |
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
- 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
- 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)