Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:unix:lab_skrypty_adv [2016/11/21 10:17]
kkluza
pl:dydaktyka:unix:lab_skrypty_adv [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Pisanie skryptów Bash ====== ====== Pisanie skryptów Bash ======
 +
 +===== DO PRZYGOTOWANIA =====
 +Samodzielnie należy przed tym laboratorium przygotować:​
 +
 +    * podstawy pracy z wybranym edytorem vi, Emacs, nano, pico
 +    * przypomnieć sobie artykuły pt.: {{:​pl:​dydaktyka:​unix:​gjn-sh.pdf|Podstawy programowania skryptów Sh}}, {{:​pl:​dydaktyka:​unix:​gjn-bash.pdf|GNU Bash więcej niż Sh}}
 +    * przypomnieć sobie pracę z ''​grep''​ i wyrażeniami regularnymi,​ np.:
 +      * http://​www.linux.net.pl/​~wkotwica/​doc/​grep/​grep_7.html
 +      * https://​www.cyberciti.biz/​faq/​grep-regular-expressions/​
 +
 +Dodatkowo przeglądnąć (w celu ew. skorzystania w czasie zajęć):
 +
 +    * zapoznać się z //​[[http://​www.tldp.org/​guides.html#​abs|Advanced Bash-Scripting Guide]]//
 +    * przegląnąć artykuł (3 części) //Bash by example// [[http://​www.ibm.com/​developerworks/​linux/​library/​l-bash/​|część 1]], [[http://​www.ibm.com/​developerworks/​library/​l-bash2/​|Część 2]], [[http://​www.ibm.com/​developerworks/​library/​l-bash3/​|Część 3]]
 +    * ew. przeglądnąć [[http://​www.tldp.org/​HOWTO/​Bash-Prog-Intro-HOWTO.html|BASH Programming - Introduction]]
  
 ===== Ćwiczenie 1. Słownik krzyżówkowy ===== ===== Ćwiczenie 1. Słownik krzyżówkowy =====
  
-Słownik do tego ćwiczenia znajduje się w pliku: ''/​tmp/​dictionary.txt''​.+Słownik do tego ćwiczenia znajduje się w pliku: ''/​tmp/​dictionaryen.txt''​.
  
   - (1 pkt.) Proszę napisać skrypt, który dla słowa podanego jako argument, w którym dowolne znaki wstawiamy jako “.”, wyświetli znalezione dopasowania ze słownika.\\ np. dla: .''/​skrypt b.eb..''​ znalezionym dopasowaniem mogłoby być ''​bieber''​.   - (1 pkt.) Proszę napisać skrypt, który dla słowa podanego jako argument, w którym dowolne znaki wstawiamy jako “.”, wyświetli znalezione dopasowania ze słownika.\\ np. dla: .''/​skrypt b.eb..''​ znalezionym dopasowaniem mogłoby być ''​bieber''​.
   - (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien wypisać komunikat “Nie podano słowa”.   - (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien wypisać komunikat “Nie podano słowa”.
   - (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien ponadto poprosić użytkownika o wprowadzenie słowa i pobrać od niego to słowo.   - (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien ponadto poprosić użytkownika o wprowadzenie słowa i pobrać od niego to słowo.
-  - (1 pkt.) Skrypt powinien sprawdzać, czy pobrane słowo nie zawiera niedozwolonych znaków.+  - (1 pkt.) Skrypt powinien sprawdzać, czy pobrane słowo nie zawiera niedozwolonych znaków ​(innych niż litery i kropki) i wyświetlić komunikat "​Podano nieprawidłowe znaki".
  
-**Bonus**: 
- (1 pkt.) Odgadnij hasło i sprawdź je przy użyciu ''/​tmp/​checkpassword''​. Listę haseł do sprawdzenia można wysłać np. przy użyciu: \\ ''​cat /​tmp/​dictionary.txt | /​tmp/​checkpassword''​. \\ Podpowiedź do hasła: //Kończy sie na "​us",​ ma 7 liter, nie zaczyna się na literę z pierwszej połowy alfabetu, a nazwę kojarzy każdy, kto był w Hong Kongu.// 
  
 ===== Ćwiczenie 2. Deszyfrator szyfru przestawieniowego ===== ===== Ćwiczenie 2. Deszyfrator szyfru przestawieniowego =====
Linia 17: Linia 30:
 Słownik do tego ćwiczenia znajduje się w pliku: ''/​tmp/​slownikpl.txt''​.\\ Słownik do tego ćwiczenia znajduje się w pliku: ''/​tmp/​slownikpl.txt''​.\\
  
-  - (1 pkt.) Napisz skrypt, który odszyfruje wiadomość zaszyfrowaną ROT13: ''​wrqan m plse cvah gb fvrqrz''​ +  - (1 pkt.) Napisz skrypt, który odszyfruje wiadomość zaszyfrowaną ROT13: ''​ wrqan m plse cvah gb fvrqrz''​ 
-  - (1 pkt.) Napisz skrypt, który odszyfruje poniższą wiadomość zaszyfrowaną analogicznym szyfrem przestawieniowym,​ ale z inną liczbą przesunięcia. Skrypt powinien ​odgadnąć liczbę automatycznie,​ na podstawie tego, czy słowa z wiadomości występują w słowniku ''/​tmp/​slownikpl.txt''​.+  - (1 pkt.) Napisz skrypt, który odszyfruje poniższą wiadomość zaszyfrowaną analogicznym szyfrem przestawieniowym,​ ale z inną liczbą przesunięcia. Skrypt powinien ​wyświetlić rezultaty wszystkich możliwych przesunięć. Nie należy przejmować się polskimi znakami (one nie są zaszyfrowane). 
 +  - (1 pkt.) Skrypt powinien sprawdzić, czy słowa z rozszyfrowanej ​wiadomości występują w słowniku ''/​tmp/​slownikpl.txt'' ​\\ i dla każdej potencjalnego rezultatu wypisać: ''"​Znaleziono w słowniku X / Y"'',​ \\ gdzie X to liczba słów z wiadomości występujących w słowniku, a Y liczba wszystkich słów rozszyfrowanej wiadomości. 
 +  - (1 pkt.) Skrypt powinien odgadnąć klucz (liczbę przesunięcia) automatycznie,​ przyjmując że np. wiadomość rozszyfrowano,​ jeśli dopasowano ponad 30% słów ze słownikiem.
  
   unjwbxej heyjwd hdkwd unsz yfpnj xfrj f ptqjosj yt uwejxzsnęhnj qnyjw b yjo bnfitrtśhn   unjwbxej heyjwd hdkwd unsz yfpnj xfrj f ptqjosj yt uwejxzsnęhnj qnyjw b yjo bnfitrtśhn
  
-**Bonus**: (1 pkt.) Odgadnij pin -- sprawdź jego poprawność programem ​''​/​tmp/​checkpin'' ​np. ''​echo 12345 | /​tmp/​checkpin''​.+Bonus: (1 pkt.) Odgadnij ​7-cyfrowy ​pin – sprawdź jego poprawność programem /​tmp/​checkpin np. echo 1234567 ​| /​tmp/​checkpin.
  
  
Linia 31: Linia 46:
   * (1 pkt.) Proszę napisać skrypt, który wylosuje dowolne hasło ze słownika. ​   * (1 pkt.) Proszę napisać skrypt, który wylosuje dowolne hasło ze słownika. ​
   * (1 pkt.) Skrypt powinien losować hasło tak długo, aż znajdzie hasło nie krótsze niż 8 liter, przy czym losowanie hasła powinno odbywać się w osobnej funkcji.   * (1 pkt.) Skrypt powinien losować hasło tak długo, aż znajdzie hasło nie krótsze niż 8 liter, przy czym losowanie hasła powinno odbywać się w osobnej funkcji.
-  * (1 pkt.) Dla ustalonego hasła skrypt następnie losuje hasła dodatkowe zaczynające się od każdej z liter hasła głównego. +  * (1 pkt.) Dla ustalonego hasła skrypt następnie losuje hasła dodatkowe zaczynające się od każdej z liter hasła głównego.\\  
-  ​* ​Przykład: dla hasła głównego ​kawa, program może wylosować hasła dodatkowe:+Przykład: dla hasła głównego ​"kawa", program może wylosować hasła dodatkowe:
  
   |k|orniszon   |k|orniszon
Linia 39: Linia 54:
   |a|zymut   |a|zymut
  
-  * (1 pkt.) Skrypt po podaniu opcji “--print” lub -p” wypisuje pustą krzyżówkę (ascii art jak poniżej) oraz opisy do haseł, a “--solved” lub -s” wypisuje krzyżówkę wypełnioną.+  * (1 pkt.) Skrypt po podaniu opcji ''​-print'' ​lub ''​-p'' ​wypisuje pustą krzyżówkę (ascii art jak poniżej) oraz opisy do haseł, a ''​-solved'' ​lub ''​-s'' ​wypisuje krzyżówkę wypełnioną.
   ____________   ____________
   |_|_|_|_|_|_|_|_|_|   |_|_|_|_|_|_|_|_|_|
Linia 47: Linia 62:
  
  
-===== Dodatkowe materiały ​=====+===== Ćwiczenie 4. Lista mailingowa ​=====
  
-W pliku ''​/​tmp/​dictionary.txt'' ​znajduje się słownik anglojęzyczny.\\ +Napisz skrypt ​''​grupamailingowa'' ​rozsyłający e-maile do wszystkich zapisanych członków grupy (proszę przetestować działanie skryptu na serwerze student)Skrypt powinien obsługiwać następujące opcje: 
-pliku ''/​tmp/​slownikpl.txt'' ​znajduje się słownik polskojęzyczny.\\ +  - (1 pkt.) Bez opcji skrypt pyta o temat i treść maila, a następnie używając polecenia ''​mail''​ rozsyła e-maile do wszystkich odbiorców podanych w pliku ''​listaodbiorcow''​. 
-pliku ''/​tmp/​krzyzowkowe.txt'' ​znajdują ​się hasła krzyżówkowe z opisem.\\+  - (1 pkt.) Dla opcji ''​-a''​ / ''​-‐add''​ -- dodaje podany jako argument adres e-mail do pliku ''​listaodbiorcow''​. 
 +  - (1 pkt.) Dla opcji ''​-r''​ / ''​-‐remove''​ -- usuwa podany jako argument adres e-mail z pliku ''​listaodbiorcow''​. 
 +  - (1 pkt.) przypadku opcji ''​-a''​ / ''​-‐add''​ sprawdza czy podany adres e-mail jest prawidłowo skonstruowanym adresem e-mail (wyrażenie regularne) oraz sprawdza, czy podany adres nie znajduje ​się już na liście.
  
  
pl/dydaktyka/unix/lab_skrypty_adv.1479719879.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0