Na tomto terminu sme mali tu cest dostat (udajne) najstarsiu ulohu, ktora kedy bola na skuske z Unixu (tzn. nebola vlastne ani nikde na nete riesena).
Uloha, napriek tomu ze zo zaciatku znela velmi hrozivo (IP adresy, networking, konfiguracne subory atd...), nakoniec nebola az tak hrozna. Jednalo sa vpodstate iba o "jednoduchu" pracu s textom.
Kedze skuska bola pred 2 dnami, presne si zadanie nepamatam, no zhruba znelo nejak takto:
Mame vstupny subor configfile.cfg, ktory je v takomto formate
DOMAIN cislo meno_domeny
NET meno_site IP_prefix IP_routru subnet_mask [DNS_server]
IP_pocitace [-]MAC [-]meno [aliasy]
s tym, ze toto su iba formaty roznych riadkov v subore. Neznamena to teda, ze v nom su iba 3 riadky. Moze ich byt N, avsak kazdy jeden z nich musi byt v jednom z tychto formatov.
Ked bol v subore riadok zacinajuci s NET, tak sme mohli predpokladat, ze vsetky riadky na ktorych boli pocitace (nasledujuce po nom) patria do tejto siete, az pokym sa na riadke nevyskytne dalsi riadok NET. Teda riadky NET tvorili akesi bloky sieti, do ktorych patrili nasledujuce pocitace. DOMAIN mohli byt hocikde.
IP_prefix je prefixom IP adresy pre danu siet. Napriklad ak v IP_prefix bude "122.30", tak ak v IP_pocitace bude "22.31" tak cela IP adresa pre dany pocitac je "122.30.22.31".
IP_prefix moze byt bud 1,2 alebo 3 bytovy (teda X, X.X, alebo X.X.X). IP_pocitace je bud doplnok k sieti (tak ako som to napisal vyssie), alebo bude v plnom (4-byte) formate.
Pocitac ma svoje meno (pripadne dalsie aliasy nasledujuce za menom) ktore moze byt v dvoch formatoch:
1. Bud je vo formate (bez tych uvodzoviek) "this_is_my_name." ; teda konci bodkou. V tom pripade je to cele meno a chapeme ho ako string.
2. Alebo je vo formate ----------||------------ "not_all_of_my_name.33" ; teda za poslednou bodkou v nazve nasleduje este cislo. Toto cislo sa odkazuje na meno domeny (teda neskor, ked budeme vstupny subor spracovavat, tak namiesto tohoto cisla rozexpandujeme meno domeny s danym cislom).
Avsak, trebalo osetrit niekolko podmienok:
1. Duplicita MAC adries. Nemoze sa nam stat, ze by boli 2 pocitace s rovnakou MAC adresou. V tom pripade vypisem chybu a nebudem vytvarat ziadne subory. Vynimkou je prepinac [-] pred MAC adresou, ktory sposobi to, ze zadanu MAC neporovnavam ohladom duplicity.
2. Duplicita mien. Rovnako ako pri MAC, prepinac [-] sposobi ze nehladam duplicitu s danym menom. Rozdiel je vsak v tom, ze v tomto pripade ak hladam duplicitu, tak sa pozeram aj na mena sieti.
3. Duplicita cisel domeny.
4. Ak sa vyskytne meno pocitaca, ktore vyuziva cislo domeny, ktora este ale nebola zapisana skor, tak je to chyba.
Nasou ulohou bude vytvorit a nahradit 2 subory, a to /etc/hosts a /etc/bootpd.
/etc/hosts je v nasledovnom formate:
IP_pocitace MAC meno [aliasy]
kde zapisem "vsetky" pocitace ktore su vo vstupnom subore (ak dany pocitac mal prepinac [-] pri MAC adrese, tak ho do /etc/hosts nevpisujem). IP_pocitace zapisem v plnom zapise, teda ak pocitac ma iba suffix, musim ho spojit s jeho NET prefixom. Meno pocitaca rovnako, ak pouziva meno domeny, musim ho rozexpandovat podla mena domeny k danemu cislu.
Potom bolo treba spravit /etc/bootpd. Tento bol trosku komplikovanejsi. Prvy riadok sme mali opisat uz z existujuceho suboru /etc/bootpd; nachadzal sa tam nejaky :root:IPaddress:router....
Potom, co sme skopirovali z povodneho /etc/bootpd prvy riadok, mali sme donho dopisovat dalsie riadky na zaklade nasho vstupneho suboru:
(pre siete) meno_siete:IP=ip_prefix:SM=subnet_mask:[DS=dns_server]:
(pre pocitace) meno_pc:IP=ip_pocitace:MC=MAC_adresa:NN=meno_siete_do_ktorej_patri:
Pre vsetky (tie ktore nemali - pred MAC) pocitace a pre vsetky siete.
Znovu, to co bolo treba rozexpandovat tak sa muselo rozexpandovat, IP adresy sa museli spajat.
Ked sme tieto subory mali hotove a nevyskytla sa ziadna chyba, bolo treba spravit nieco nasledovne:
1. Trebalo nahradit nasimi vytvorenymi subormi tie povodne /etc/hosts a /etc/bootpd
2. Mali sme si zistit (na zaklade prikazu ps) s akymi argumentami je spusteny proces bootpd.
3. Potom sme ho mali killnut a znovu ho spustit s tymi istymi argumentami.
A myslim, ze to je asi vsetko.
Ako som pisal, zadanie znelo dost komplikovane, avsak v konecnom dosledu to bola iba praca s textom.
SPOILER ALERT; RIESENIE:
Ako ulohu riesit, tak na to bolo mnoho sposobov. Najefektivnejsie to vsak bolo bud cez sed alebo este lepsie cez awk. Pri awk sme totiz mohli vyuzivat asociativne polia a to vyuzit na zapamatanie si dvojice nazov_domeny---cislo. Komplikacie mohlo robit to, ked sme nevedeli, v akom formate je IP adresa pocitaca a trebalo to tam spajat dokopy. Forst povedal, ze najjednoduchsie bolo si to niekde na zaciatku vsetko spojit dokopy a vytvorit si plnu IP adresu pri kazdom PCcku; rovnako si rozexpandovat kazde meno ktore bolo treba rozexpandovat a toto si ulozit do pomocneho suboru, z ktoreho sme potom uz iba "hlupo" citali a vyrabali subory /etc/hosts a /etc/bootpd.
Ja som mal ulohu poriesenu vpodstate na 70%; stihol som osetrit vsetky zle pripady (duplicity a problem s vyuzivanim nedefinovanej domeny), vyrobil som subor hosts a subor bootpd som stihol vyrobit iba tu sietovu cast; ten kill a restart procesu bootpd som vobec nestihol. Robil som to cez awk, ale bolo to pretty complicated ako som to robil. Dostal som trojku s tym, ze Forst povedal, ze vidi, ze ovladam vsetky komponenty a programy unixu, ktore sme sa ucili ale ze algoritmus a postup aky som zvolil je velmi zly a neefektivny. Vela citani suboru, nakopirovany kod (nepouzite funkcie.. to vsak vytkol vsetkym)...
Co sa znamok tyka, tak prvy verdikt bol takyto: 1 jednicka, 1 dvojka, 2 trojky, 1 stvorka; 3 ludia na pokec. Z pokecu nakoniec vzisla 1 dvojka a 2 stvorky.
12.9.2018 Bootpd
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.
Zpět na „SWI095 Úvod do UNIXu“
Přejít na
- Aktuální informace
- ↳ Studijní oddělení
- ↳ Knihovna
- ↳ Studentská komora Akademického senátu (SKAS)
- ↳ Volby na ak. rok 2013/2014
- Všichni
- ↳ Práce
- ↳ Klubovna
- ↳ Toto fórum
- ↳ Státní závěrečná zkouška
- ↳ Bakalářské SZZ
- ↳ Magisterské SZZ
- ↳ Info for foreign students
- ↳ Akce
- ↳ Fotbalový turnaj 2008
- Informatika ZS
- ↳ Výuka ZS 1. ročník
- ↳ DMI002 Diskrétní matematika
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI054 Matematická analýza I
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI057 Lineární algebra I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG030 Programování I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI120 Principy počítačů a operačních systémů
- ↳ SWI087 Principy počítačů
- ↳ Ostatní
- ↳ DMI051 Úvod do řešení problémů kombinatorických, mat. i jiných (IPS) II
- ↳ Výuka ZS 2. ročník
- ↳ MAI056 Matematická analýza III
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ OFY016 Fyzika pro nefyziky I - Svět kolem nás
- ↳ SWI089 Ochrana informace I
- ↳ SWI096 Internet
- ↳ TIN061 Algoritmy a datové struktury II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ Ostatní
- ↳ Aplikační software
- ↳ NPRG035 Jazyk C# a platforma .NET
- ↳ NPRG041 Programování v C++
- ↳ AIL062 Výroková a predikátová logika
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ PGR013 Java
- ↳ MAI059 Pravděpodobnost a statistika
- ↳ Výuka ZS 3. ročník
- ↳ SWI099 Administrace Systemu Windows
- ↳ SWI015 Programování v Unixu
- ↳ SWI098 Principy překladačů
- ↳ 2006
- ↳ Ostatní
- ↳ DBI007 Organizace a zpracování dat I
- ↳ 2006
- ↳ MAI062 Algebra I
- ↳ PGR003 Počítačová grafika I
- ↳ SWI090 Počítačové sítě I
- ↳ Výuka ZS NMgr.
- ↳ TIN066 Datové struktury I
- ↳ TIN062 Složitost I
- ↳ TIN064 Vyčíslitelnost I
- ↳ MAI060 Pravděpodobnostní metody
- ↳ SWI004 Operační systémy
- ↳ SWI106 Administrace Unixu
- ↳ Ostatní
- ↳ NTIN090 Základy složitosti a vyčíslitelnosti
- ↳ OPT042 Programování s omezujícími podmínkami
- ↳ AIL002 Neuronové sítě
- ↳ AIL025 Evoluční algoritmy I
- ↳ AIL069 Umělá inteligence I
- ↳ NDBI001 Dotazovací jazyky I
- ↳ TIN070 Testování software
- ↳ NDBI027 Datové sklady a analytické metody pro Business Intelligence
- ↳ NDBI034 Vyhledávání multimediálního obsahu na webu
- ↳ NPRG023 Softwarový projekt
- Informatika LS
- ↳ Výuka LS 1. ročník
- ↳ MAI055 Matematická analýza II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI058 Lineární algebra II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG031 Programování II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ TIN060 Algoritmy a datové struktury I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI095 Úvod do UNIXu
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ Ostatní
- ↳ Výuka LS 2. ročník
- ↳ SWI071 Ochrana informace II
- ↳ TIN071 Automaty a gramatiky
- ↳ PRG033 Ročníkový projekt - specifikace
- ↳ DMI011 Kombinatorika a grafy I
- ↳ DBI025 Databázové systémy
- ↳ Ostatní
- ↳ SWI036 Programování pro Windows I & II
- ↳ SWI096 Internet
- ↳ PRG005 Neprocedurální programování
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ NSWI143 Architektura počítačů
- ↳ Výuka LS 3. ročník
- ↳ Ostatní
- ↳ PGR004 Počítačová grafika II
- ↳ PRG036 Technologie XML
- ↳ SZZ026 Bakalářská práce
- ↳ PRG003 Metodika programování a filozofie programovacích jazyků
- ↳ MAI064 Matematické struktury
- ↳ MAI042 Numerická matematika
- ↳ SWI021 Počítačové sítě II
- ↳ SWI045 Rodina protokolů TCP/IP
- ↳ NPRG038 Pokročilé programování pro .NET
- ↳ Výuka LS NMgr.
- ↳ SWI109 Konstrukce překladačů
- ↳ NPRG042 Programování v paralelním prostředí
- ↳ SWI117 Technologie vývoje webových aplikací
- ↳ SWI026 Softwarové inženýrství
- ↳ MAI061 Metody matematické statistiky
- ↳ I1 Ostatní Teoretická informatika
- ↳ I2 Ostatní Softwarové systémy
- ↳ I3 Ostatní Matematická lingvistika
- ↳ I4 Ostatní Diskrétní modely a algoritmy
- ↳ AIL026 Evoluční algoritmy II
- ↳ AIL070 Umělá inteligence II
- ↳ NDBI010 Dokumentografické informační systémy
- ↳ NDBI023 Dobývání znalostí
- ↳ NDBI016 Transakce
- ↳ NDBI006 Dotazovací jazyky II
- ↳ NAIL029 Strojové učení
- Matematika
- ↳ Výuka LS 1. ročník
- ↳ Lineární algebra 2
- ↳ Programování 2
- ↳ Matematická analýza 1b
- ↳ Volitelné předměty
- ↳ Výuka LS 2. ročník
- ↳ Pravděpodobnost a statistika
- ↳ Teorie Míry a integrálu II
- ↳ Algebra II
- ↳ Matematická analýza 2b
- ↳ Ostatní
- ↳ Výuka LS 3. ročník
- ↳ Předměty numeriky
- ↳ Úvod do funcionální analýzy
- ↳ Funkcionální analýza I
- ↳ Vybrané partie z funkcionální analýzy
- ↳ Náhodné procesy 2
- ↳ Matematická statistika 2
- ↳ Teorie pravděpodobnosti 2
- ↳ Matematická ekonomie
- ↳ Ostatní
- ↳ LS - Předměty MMIB a pokročilé Algebry
- ↳ Všeobecná diskuse
- ↳ Počítačová algebra
- ↳ Teorie čísel a RSA
- ↳ Aplikovaná kryptografie II
- ↳ Standardy v kryptografii
- ↳ Kryptoanalytické útoky
- ↳ Aplikace bezpečnostních mechanismů
- ↳ Kvantové a DNA počítače
- ↳ Faktorizace velkých čísel
- ↳ Algebraická geometrie v kladné charakteristice
- ↳ Výuka ZS 1. ročník
- ↳ MAA001 Matematická analýza 1a
- ↳ PRM044 Programování I
- ↳ MAA079 Proseminář z kalkulu 1a
- ↳ DMA005 Diskrétní matematika
- ↳ ALG001 Lineární algebra a geometrie I
- ↳ Ostatní
- ↳ Volitelné předměty
- ↳ Výuka ZS 2. ročník
- ↳ MIB
- ↳ Matematická analýza 2a
- ↳ Teorie míry a integrálu
- ↳ Numerika
- ↳ Algebra
- ↳ Předměty finanční matematiky
- ↳ Ostatní
- ↳ Výuka ZS 3. ročník
- ↳ Matematická statistika
- ↳ Teorie pravděpodobnosti
- ↳ Náhodné procesy
- ↳ Optimalizace
- ↳ Předměty numeriky
- ↳ Předměty finanční matematiky
- ↳ Komplexní analýza
- ↳ Funcionální analýza
- ↳ Ostatní
- ↳ ZS - předměty MMIB a pokročilé Algebry
- ↳ Úvod do algebry
- ↳ Složitost pro kryptografii
- ↳ Samoopravné kódy
- ↳ Teoretická kryptografie
- ↳ Aplikovaná kryptografie I
- ↳ Datové a procesní modely
- ↳ Eliptické křivky
- ↳ Členění kryptografických standardů
- ↳ Kryptografické protokoly
- ↳ Úvod do teorie grup
- ↳ Právní aspekty zabezpečení dat
- ↳ Komutativní okruhy
- Fyzika ZS
- ↳ Výuka ZS 1. ročník
- ↳ OFY067 Fyzika v experimentech I
- ↳ MAF027 Lineární algebra I
- ↳ OFY021 Fyzika I (mechanika a molekulová fyzika)
- ↳ OFY056 Programování pro fyziky
- ↳ MAF033 Matematická analýza I
- Oborový mix aktuální
- ↳ Anglický jazyk
- ↳ Tělesná výchova
- ↳ Granty GAUK
- Odkazy
- ↳ Wiki
- ↳ SKAS
- ↳ Spolek Matfyzák
- Matematika Archiv
- ↳ Výuka LS 2006/2007 3. ročník
- ↳ Předměty numeriky
- ↳ Úvod do funcionální analýzy
- ↳ Náhodné procesy 2
- ↳ Matematická statistika 2
- ↳ Teorie pravděpodobnosti 2
- ↳ Matematická ekonomie
- ↳ Výuka LS 2006/2007 2. ročník
- ↳ Pravděpodobnost a statistika
- ↳ Teorie Míry a integrálu II
- ↳ Angličtina
- ↳ Algebra II
- ↳ Matematická analýza 2b
- ↳ Ostatní
- ↳ Výuka LS 2006/2007 1. ročník
- ↳ Volitelné předměty
- ↳ Lineární algebra 2
- ↳ Programování 2
- ↳ Matematická analýza 1b
- Zrušené předměty
- ↳ SWI087 Principy počítačů
- ↳ SWI120 Principy počítačů a operačních systémů
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG029 Programování v C++
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG032 Objektově orientované programování
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI097 Základy operačních systémů
- ↳ NDBI003 Organizace a zpracování dat II
- Roztřídit (resty)
- ↳ Výuka ZS 2005/06 2. ročník
- ↳ Předměty informační bezpečnosti
- ↳ Předměty finanční matematiky
- ↳ Teorie míry a integrálu
- ↳ Numerika
- ↳ Algebra
- ↳ Analýza/kalkulus
- ↳ Matematika obecně
- ↳ Výuka LS 2005/06 2.ročník
- ↳ Základy matematického modelování
- ↳ Finanční management
- ↳ Úvod do optimalizace
- ↳ Numerika
- ↳ Kalkulus
- ↳ Angličtina
- ↳ Diferenciální geometrie
- ↳ Pravděpodobnost a statistika
- ↳ Teorie míry a integrálu II
- ↳ Algebra II
- ↳ Analýza 2b