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!

 

17. Körlevélküldés

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
 

18. Szamrendszerek kozotti konvertalas

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).