Spoločné vlastnosti
- Termín odovzdania sú uvedené v AIS2. Prihláste sa na ne obvyklým spôsobom.
Vypracujte obe zadania.
- jedno zadanie vypracujte v PowerShelli.
- druhé zadanie vypracujte v unixovskom shelli.
Zadanie musí implementovať celú požadovanú funkcionalitu. Vynechanie ktoréhokoľvek bodu má za následok zamietnutie zadania a hodnotenie FX.
Hodnotenie sa odvíja od spôsobu implementácie zadania a od odpovedí na kontrolné otázky zamerané na pochopenie vypracovania.
Zadanie spokojne vzájomne konzultujte. Vypracovanie však musí byť samostatné a jednoznačné.
Plagiátorstvo a identický kód je trestaný okamžitým hodnotením FX. Ak využijete kusy kódu alebo rady z internetu, ste povinní uviesť do zdrojového kódu odkaz na zdroj (URL blogu, odkaz na StackOverflow a pod.) V opačnom prípade je zadanie zamietnuté ako plagiát.
Zadanie bude obhájené individuálne a ústne v termíny uvedené v AIS2.
Zadanie 1: Zálohovanie
Vytvorte sadu shell skriptov, ktoré realizujú zálohovanie ľubovoľného adresára na vzdialené úložisko v duchu nástroja rsync
.
Zvoľte jeden vhodný typ vzdialeného úložiska, inšpiráciou môže byť:
- HTTP upload
- FTP
- SCP
Každá záloha adresára nech je vo vzdialenom úložisku identifikovaná časovou značkou, ktorá je jednoznačná.
Požadované operácie
Nástroj nech podporuje nasledovné operácie:
odzálohovanie ľubovoľného adresára zadaného z parametra do úložiska
Odporúča sa využiť niektorý z komprimačných nástrojov.
Create-Backup C:\Users\novotnyr\Documents
výpis všetkých záloh na vzdialenom úložisku
$> Get-Backup Zoznam zaloh: 2011/10/10 2011/12/1 2012/1/2
obnovenie zálohy na základe zadanej časovej značky do zadaného adresára
Restore-From-Backup 2011/10/10 C:\Users\rn\novotnyr\Document
Záloha musí byť obnovená do identického stavu, v akom sa nachádzala pri zálohovaní, čo platí pri obnove súborov do existujúceho adresára. Ak používateľ obnovuje do existujúceho adresára, vyžadujte od neho potvrdenie.
zistenie zoznamu rozdielnych súborov (pribudnutých, odbudnutých, zmenených) medzi dvoma zálohami.
Compare-Backups 2011/10/10 2012/1/2 + index.html + wiki/wiki.html - chata.jpg - ozierka.jpg # changelog # zoznamuloh.jpg
Odporúčania
- Jedno z riešení odošle na server spolu s komprimovaným adresárom aj súbor obsahujúci cesty pre každý zo zoznamu súborov.
- Skúste použiť HTTP upload, pričom na strane servera vytvorte jednoduchý PHP skript a na strane shellskriptu využite triedu System.Net.WebClient a jej metódy
Upload***
.
Zadanie 2: Spracovanie log súborov
Majme systém, ktorý generuje logovací súbor, ktorý vyzerá nasledovne:
2017-12-10 10:21:16.993 INFO --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : unknown: Restarting Consumer: tags=[{amq.ctag-cIlAPNJRXDylTM1UAH5GsA=user.aml-check-status-requested}], channel=Cached Rabbit Channel: AMQChannel(amqp://ft-iam@127.0.0.1:5672/ft,11), conn: Proxy@56e7f0b Shared Rabbit Connection: SimpleConnection@2a5586ac [delegate=amqp://ft-iam@127.0.0.1:5672/ft, localPort= 50737], acknowledgeMode=AUTO local queue size=0
2017-12-10 10:21:17.007 INFO --- [cTaskExecutor-2] o.s.a.r.c.CachingConnectionFactory : unknown: Created new connection: SimpleConnection@1afb1d2f [delegate=amqp://ft-iam@127.0.0.1:5672/ft, localPort= 53079]
2017-12-10 10:21:17.953 WARN --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : unknown: Consumer raised exception, processing can restart if the connection factory supports it
2017-12-10 10:21:18.212 WARN --- [cTaskExecutor-3] c.g.n.MessageService : root: Handling message: OK
Na každom riadku je jeden záznam v nasledovnom tvare:
- časová pečiatka (rok-mesiac-deň hodina:minúta:sekunda.milisekunda)
- dve medzery
- úroveň hlášky: jeden z reťazcov
DEBUG
aleboINFO
aleboWARN
aleboERROR
. - medzera a tri pomlčky a medzera
- názov vlákna (thread) v hranatých zátvorkách
- medzera
- názov Java triedy, ktorá vygenerovala hlásenie
- medzera, dvojbodka a medzera
- meno aktuálne prihláseného používateľa, pre ktorého sa vygenerovala hláška alebo
unknown
ak používateľ nie je známy - dvojbodka
- text logovacej hlášky
Požiadavky
Implementujte nástroj filter-log
s nasledovnou funkcionalitou:
- vypíšte logovacie záznamy za posledných 5 minút
- vypíšte logovacie záznamy za poslednú hodinu
- vypíšte logovacie záznamy pre zadaného používateľa
- vypíšte logovacie záznamy, ktoré obsahujú v texte logovacej hlášky zadaný text
- vypíšte logovacie záznamy, ktoré sa týkajú jednej zadanej Java triedy
- vypíšte logovacie záznamy, ktoré sú dôležitejšie alebo rovné ako zadaná úroveň hlášky. Ak používateľ vyžiada hlášky úrovne
WARN
, vypíšte hlášky úrovneWARN
aERROR
, ale už nieDEBUG
aINFO
. Priority úrovní súDEBUG
<INFO
<WARN
<ERROR
.
Obmedzenie unixovského shellu
- Zadanie v shelli demonštrujte na serveri
student.ics.upjs.sk
alebo na vlastnej inštalácii Linuxu. - V zadaní použite len nástroje vymenované v norme POSIX.
- Zadanie skontrolujte nástrojom
shellcheck
dostupnom buď online alebo na serveristudent.ics.upjs.sk
. - vyhnite sa využitiu bashismov, teda konštrukcií, ktoré fungujú len v
bash
i. Najlepšie je spúšťať skript pod shellomdash
, ktorý je dostupný na serveris.ics.upjs.sk
. - alternatívne využite skript
checkbashism
(viď dokumentácia)