BASH SCRIPT BEADANDÓ FELADATOK
Az alább látható feladatok képezik a
gyakorlat teljesítéséhez szükséges 2. beadandó feladatot. Mindenkinek a neptun
kódja mellett található feladatot kell megoldania. Feladatot bemutatni csak az
órán lehet, határidő az utolsó előtti gyakorlat.
1. Bejelentkezési statisztika
Argumentumban adott felhasználó bejelentkezéseiről ad információt. Legutolsó
bejelentkezése, mikor, honnan történt, összesen mennyi időt töltött bent,
bejelentkezésenként átlagosan mennyi időt töltött bent, naponta átlag hányszor
jelentkezik be (PLUSZ: és naponta átlagosan mennyi időt tölt el azon a gépen).
Írja ki azt a 10 gépet, ahonnan a legtöbb bejelentkezése történt.
Pl1.:
$>bejelent user1
$>Utolso bejelentkezés: Mar 05 15:45 -
15:49
gépnév: nec21.iit.uni-miskolc.hu
...
2. Naptár
Írj egy programot, ami emlékeztetőként kiírja az argumentumban megadott
dátumon lévő névnapot, paraméter nélkül indítva az aktuális napra vonatkozik.
Továbbá előre meghatározott napra előre szól, hogy valami fontos esemény lesz
hh.nn dátumon. Célszerűen 12 fájlba szervezve, soronként megadni a napokat, az
egyes mezőkben a névnapok, születésnapok, egyéb események felsorolása,
amennyiben nem egy nappal előre kérjük az emlékeztetést, akkor speciális
karakterek közé zárva, hogy hány napra előre. Példa az adatfájlra:
$>cat jun
1:Tunde
2:Kármen:Anita:Brigi szuletesnapja! {3}
....
(3 nappal előre jelzi a
2.-ai születésnapot, és 2.-án a két névnapot is)
3. Tantárgynapló
Írj tantárgynapló programot, ami egyik fájlban a tantárgyakat tartja
nyilván, a másik fájlban a nevet és tankört, valamint a tárgyak eredményeit az
előző fájlban meghatározott sorrend szerint. A "rekordok" névsor
szerint legyenek rendezve. Egy egyszerű menüvel lehessen lekérdezni, új adatot
felvinni, törölni, ill. módosítani, valamint átlagot számolni. Így nézhet ki
például az egyik adatfájl egy sora:
$> cat adatok
Kiss Janos:G-111:2:3:4:5:3:2:5:2:3:4:5
4. Sin és cos számítás
Írj programot, ami argumentumban megadott számnak kiszámolja a szinuszát,
illetve koszinuszát, Taylor sorbafejtéssel. Harmadik argumentumban megadható
legyen a sorbafejtésnél figyelembe vett tagok száma. Ez alapértelmezettként 3
(maximum 8). Pl.:
$>szog sin 30 5
sin 30 fok = …
5. Arcsin és arccos számítás
Írj programot, ami argumentumban megadott számnak kiszámolja az arcus
sinusat illetve arccosinusat, Taylor sorbafejtéssel Harmadik argumentumban
megadható legyen a sorbafejtésnél figyelembe vett tagok száma. Ez
alapértelmezettként 3 (maximum 8). Pl.:
$>szog arcsin 0.5 5
arcsin 30 fok = …
6. Sh és ch számítás
Írj programot, ami argumentumban megadott számnak kiszámolja a sh-ját
illetve ch -ját, Taylor sorbafejtéssel. Harmadik argumentumban megadható legyen
a sorbafejtésnél figyelembe vett tagok száma. Ez alapértelmezettként 3 (maximum
8). Pl.:
$>szog ch 30 5
ch 30 fok = x
7. Családfa
Írj programot, amely családfát listáz ki egy fájlból. Mindenkiről tartsa
nyilván az alábbi adatait: születési idő/hely), halálozási idő, lakcím, anyja,
apja, gyerekei neve, felesége/férje neve. Célszerűen minden személyt egyedi
azonosítóval érdemes ellátni. Egyszerre egy egyénről írjon ki minden
információt. A program elindítása után a fájlban az első egyént listázza ki
elsőnek. Különböző billentyűk lenyomására lehet más emberekre átváltani. (pl.:
"a" billentyű lenyomására az egyén anyja, "1" billentyű
lenyomására az első gyermeke, "f" férj/feleség stb).
$>csalad
Név:Kiss János
Anyja neve:Nagy Borbala
Apja neve:Kiss Bela
Szuletett:1912.12.12. Kisnagyfalva
Lakcim:9876. Nagykisfalva, Kisvasut ut. 11
Felesége neve:Nagy Krisztina
1. gyereke neve: Kiss Krisztina
2. gyereke neve: Kiss Borbala
3. gyereke neve: Kiss Miklos
8. Fájlkereső
A program valósítson meg fájlkeresést (max 2 jegyzék mélységben). Mondja
meg a keresett fájlról, hogy létezik-e, mekkora a mérete és ki a tulajdonosa. A
program először egy adatbázisban keres, amennyiben ott nem találja a keresett
fájlt, akkor a teljes fájlrendszert végignézi. (Az adatfájl elérési útvonalakat
tartalmaz.) A keresés eredményének megfelelően bővítse az adatbázist. A program
tegye lehetővé az adatbázis explicit bővítését is, például a script valamilyen
(pl. -u) kapcsolóval való meghívásával.
$>fkeres myfile
$>A file eleresi
utvonala:/etc/usr/bin/group1/valaki3/myfile
Tulajdonosa: Buga Jakab
Merete: 4588 bytes
9. Számológép
A shell script valósítsa meg egy számológép funkcióit. Végre tudja hajtani
az alábbi műveleteket: összeadás, kivonás, osztás, szorzás, hatványozás,
gyökvonás (négyzetgyök, köbgyök). 2 műveletből álló sort is tudjon kezelni!
Jelezze, ha szintaktikai hiba van a megadott argumentumban (nincs műveleti jel
a számok között).
10. Bejelentkezési statisztika 2
A shell script szűrje a last parancs eredményét, és írja ki hallgatókat
csökkenő/növekvő sorrendben az alapján, hogy hányszor jelentkeztek be. Egy
másik kapcsolóval azt írja ki, hogy mennyi időt töltöttek el összesen az adott
gépen (szintén növekvő/csökkenő sorrendben listázva). Meg lehessen adni, hogy
hány darab felhasználót listázzon ki. Pl.:
$>gepido -p n 2
user1 Kiss Jozsef 25 login
user2 Nagy Pal
23
login
$>gepido -t cs 2
login name
day:hour:min min
user2 Nagy Pal
01:22:18
3778
user1 Kiss
Jozsef 01:12:36 3296
11. Levelezőlista
A shell script egy
levelező listát kezel. Fájlba tároljon email címeket. A script argumentum
nélküli indításakor küldje el minden címre az aktuális dátumot és egy előre
megírt üdvözlő üzenetet, amit szintén fájlban tárolunk. –e kapcsolóval lehessen
egyedi üzenetet is küldeni, amit a program elküld a címzetteknek és le is
tárolja egy fájlban, aminek a neve az aktuális időpont. Valósítsa meg
kapcsolókkal a fel- és leiratkozásokat is. A próbák során ne zavarjon másokat!
12. Kozos koltseg nyilvantarto
Kepzeld magad Vagasi
Feri helyebe es irj Kutya ur szamara egy olyan shell scriptet, ami segiti ot
kozos koltseg nyilvtantartasaban. A shell script az argumentumkent kapott
parancs alapjan ertelmezze a tobbi parameteret. A parancs lehet hozzaadas,
listázás, új hónap. A neveket, felhasznalokat egy fileban tarolja. Hozzadaskor
a szukseges adatok: nev, lakas szama, melyik honap, befizetett összeg. Listanal
irja ki azon lakók adatait, akiknek még tartozásuk van. "ujhonap"
parancsnal jegyezze be a program minden lakó számára az argumentumban megadott
befizetendő összeget és a hónap sorszámát (szintén argumentumból).
13. APEH-szimulator
Keszits shell scriptet
maganszemelyek adojanak kiszamitasahoz. Kerje be a rendszeres brutto havi
jovedelmet, egyeb brutto jovedelmet, es az esetleges osztondijat/szoctam-ot.
Ezek alapjan szamitsa, ki, hogy mennyi jarulekot es adot kell fizetnie. Az SZJA
18%, ha az eves brutto jovedelem 1.700.000 HUF felett van akkor 1.700.000-nek a
18% es a fele eso resz 36%-a az SZJA. Az osztondij/szoctam/stb. adomentes, de
az adoalapot noveli (gyk. az 1.700.000-be beleszamit). A munkavallaloi jarulek:
1.5%, a magannyugdijpenztar: 8%, penzbeli eũ jarulek: 2%,
egeszsegbiztositai jarulek: 4%, nyugdij jarulek: 1.5%. A maradek a netto.
A program részletesen
írja ki a számítás menetét, vagyis hogy milyen néven mennyi pénzt kell befizetni,
illetve az adókkal csökkentett, kézhez kapott fizetés összegét.
14. Telefonkönyv
Telefonregiszter
program, amely kapcsolók segítségével a következőket tudja: -a kapcsoló
megadása esetén felvesz egy nevet és hozzá tartozó telefonszámo(ka)t (egy
névhez akár több is tartozhasson, különböző címkékkel lehessen hozzáadni pl: -i
= irodai –o = otthoni –m = mobil) a listába (ügyeljünk a dupla elemekre), -d
kapcsoló megadása esetén törölje a paraméterként megadott nevet és a hozzá
tartozó telefonszámot, kapcsoló nélkül pedig keresse meg az illeszkedő neveket
és írja ki hozzá a telefonszámokat. (A tároláshoz használt szövegfájl formája
szabadon meghatározható, segítségképp: a vesszővel vagy kettősponttal
elválasztott mezők használata javasolt)
15. Felhasználó ellenőrzés
Írjunk shell
script programot, ami a háttérben fut és fél percenként ellenőrzi, hogy egy
felhasználó bejelentkezett-e a rendszerbe! A felhasználó nevét (nem az LDAP
azonosítóját) paraméterként kell megadni! Ha bejelentkezett, akkor írjon róla
egy levelet nekünk (előre megadott email címre), ebbe adjuk meg a felhasználó
terminál azonosítóját, nevét, hogy melyik gépről jelentkezett be, valamint
legutóbbi bejelentkezésének és a mostani bejelentkezésének időpontját.
16. Email címtár
Készíts shell
scriptet, amely emailezéshez nyújt segítséget! Tároljon neveket és hozzá
tartozó email címeket egy fájlban. Lehessen benne név vagy email cím szerint
keresni! (-k kapcsoló után megadott értéket) Lehessen hozzáadni új címet –h
kapcsolóval. Ekkor kérdezze meg a nevet és az email címet! –s kapcsolóval
indítva kérdezze meg a címzett nevét, az email tárgyát és szövegét, majd küldje
el az emailt!
A program
tegyen lehetővé egy egyszerű körlevélküldést. A címlistát egy (megfelelő
szerkezetű) adatfájlból vegye a program. Az elküldendő levélben speciális
karakterek jelölik a kiegészítendő részeket. Legalább 5 behelyettesítendő
adatot kezeljen a program! 3 argumentummal működjön: 1. a behelyettesítendő
adatok fájlja, 2. a kiegészítendő levél fájlneve, 3. pedig az elkészült levél.
$>cat
mintalevel.1
Kedves ##1##!
A .. ##2##..
.
$>cat lista.1
user1@valahol.van.hu Szabo Pal febr.24.
user2@...
$>korlev
mintalevel.1 lista.1 korlevel
A
parameterkent kapott szamot valtsa at 2-es, 8-as, 10-es vagy 16-os
szamrendszerbe. A forras es cel szamrendszert kapcsolokkal lehessen megadni.
Jelezze ha ervenytelen a megadott szam az adott szamrendszerben. A hibakat
jelezze, pl. nem megfelelo parameterezes, stb. Legyen alapertelmezett forras
(10) es cel szamrendszer (2). Pl.:
&./szamvalt.sh -f 2 -c 10 1001
9
&./szamvalt.sh -f 16 -c 10 FF
255
&./szamvalt.sh -f 10 -c 16 127
7F
19. HTML szintaktika ellenőrző
Írj egy html-szintaktika ellenőrző programot, mely ellenőrzi a nyitó
illetve záró TAG-eket. A program próbálja megállapítani a hiba helyét! Ismerje
a fontosabb TAG-eket (PLUSZ: és ha hibás TAG-gel találkozik, kérdezze meg, hogy
kijavítsa-e). Könnyen bővithető legyen új szintaktikai elemekkel (tagekkel).
Ellenőrizze az argumentumban megadott file nevét is, és hogy létező, olvasható
text file-e. pl.:
$>htmlell file
Hianyzik a </html>
Atnevezzem file.html -re?
I/N
20. Buszmenetrend
Tárold fájlban legalább 3 (létező vagy képzeletbeli) buszjárat indulási időpontjait! Majd írj egy shell scriptet, amely képes az alábbi műveletekre: Argumentumban megadott időpontban megadja a legközelebb induló busz számát és indulási idejét, ha nem kap argumentumot, alapértelmezett a jelenlegi időpont. –e és –k kapcsolókkal használva megadja minden járat 1. és utolsó indulását. Ha az időpont előtt kapcsolóként egy számot (pl. -5) írunk, megadja a sorban következő annyiadik járat indulási idejét és számát. Ha pedig a számot + jellel adjuk meg (pl. +5), az jelentse azt, hogy hány percre vagyunk a buszmegállótól.
21. Bajnokság kalkulátor
Tárold fájlban egy focibajnokság csapatait (max 10) és az 1. kör lejátszott meccseinek eredményét (pl: DVTK – FTC 3:1). A shell script számolja ki, hogy melyik csapat nyerte a bajnokságot. Mindenki mindenkivel 1 meccset játszik. A program kérje be a további fordulók eredményeit (bővítse ezekkel a fájlt) és azok alapján állapítsa meg, hogy ki nyerte a bajnokságot, valamint hogy ki rúgta a legtöbb gólt (döntetlenekkel nem kell számolnia).