[zk] 11.9.

Seznámení se základními principy operačního systému UNIX, převážně z uživatelského hlediska. Absolvent kurzu by měl být schopen napsat netriviální program v shellu.
Him
Supermatfyz(ák|ačka)
Příspěvky: 400
Registrován: 25. 1. 2008 19:59
Typ studia: Informatika Bc.

[zk] 11.9.

Příspěvek od Him »

Dostali jsme ulohu mkaliases: http://forum.matfyz.info/viewtopic.php? ... lias#p1457

Naznak meho reseni: Do jednoho souboru jsem si postupne pridal data ze souborů /etc/aliases (jeden na kazde subdomene), poznamel jsem si u kazdeho aliasu (u kazdeho radku) z jake subdomeny jsem ho ziskal. Sesortil jsem podle aliasu, pouzil uniq -u + join na ziskani unikatnich aliasu (ty jsem pridal do vysledneho vystupu), pak jsem provedl join -v 2 -1 1 -2 2 unikatni_aliasy.tmp vsechna_data.tmp, coz vytiskne nezparovane zaznamy z druheho souboru - tj. aliasy, ktere jsou zminovany na vice subdomenach a ktere musim dale resit - viz aliases.cfg
Ulozka je podle me hodne jednoducha, za hodinku jsem mel napsane reseni nanecisto a dalsi hodinku jsem to prepisoval, kontroloval a tunil..

Forstovy poznamky k reseni:

#1: soubory /etc/aliases mely format:

Kód: Vybrat vše

alias:mail1,mail2,mail3,\
mail4, mail5, mail6, mail7,\
mail8 
, pokud radek obsahuje na konci backslash, je potreba pripojit nasl. radek:

Kód: Vybrat vše

alias:mail1,mail2,mail3,mail4, mail5, mail6, mail7,mail8 
Toto neni treba vubec resit, protoze to prikaz read dela sam:

Kód: Vybrat vše

[obsah souboru test.tmp]
mail1, mail2, mail3, mail4, \
mail5, mail6, \
mail7

$ read variab<test.tmp; echo $variab
mail1, mail2, mail3, mail4, mail5, mail6, mail7
#2:
aliases.cfg - co delat v pripade kolize:

alias: +server1 +server2 -server3

napr:
Libor.forst: +ms -karlin

cili kdyz to najdse alias libor.forst na male strane tak to hodi do vystupu, kdyz na karline tak to ignoruje, kdyz jinde, tak to zahlasi chybu a ignoruje
Toto lze jednoduse resit grepem.

#3: Sliti emailu lze udelat na jednu radku: echo "$vsechny_emaily_aliasu_oddelene mezerou" | tr " " "
" | sort | uniq | tr "
" " "


==========================
Bylo nas tam 14. Znamky si presne nepamatuju (kdyz jsem dostal 1, tak jsem prestal poslouchat ;-) ). Tusim, ze tak 4 lidi meli jednicku a ze jeden clovek mel ctyrku.
Pracoval jsem na poměrně hodně materiálech pro různé předměty. Pokud Ti něco z toho ušetřilo čas, vyjádři svůj dík v podobě pár satoshi: 1H5JPTrsXie7epAQXbXhMjdgwyLbJ5NHBW ;)
Uživatelský avatar
goophy
Matfyz(ák|ačka) level I
Příspěvky: 12
Registrován: 30. 9. 2007 17:22
Typ studia: Informatika Mgr.
Kontaktovat uživatele:

Re: [zk] 11.9.

Příspěvek od goophy »

Doplním, nebo upřesním: :)

- jedničky byly tři
- nedali to dva lidi, jeden z nich se pro výsledek nedostavil

Pro to zunikatnění je asi nejjednodušší použít:

sort -u

Ještě bylo potřeba hlídat nevyřešené kolize pro daný alias z různých domén a na závěr poslat mail adminovi s přehledem, kde u koho je jaký problém.

Dle komentáře Forsta jsem použil zbabělé řešení, když jsem si všechno sypal do souborů (pro každý alias jsem měl soubor a do něj ukládal všechny emaily, které mi prošli kontrolou přes alias.cfg).

Jinak některé věci prostě nevadí, pokud nevíte. Viz příklad s tím backslashem na konci řádku a čtení přes read. Tohle jsem nevěděl a napsal jsem si řešení jak ty řádky načíst. Nejsou podstatné detaily konkrétního řešení, ale celkově je potřeba mít rozmyšlené, jak to bude celé fungovat a nemít tam zásadní neznalosti.
Odpovědět

Zpět na „SWI095 Úvod do UNIXu“