Pisanie skryptów Bash

DO PRZYGOTOWANIA

Samodzielnie należy przed tym laboratorium przygotować:

Dodatkowo przeglądnąć (w celu ew. skorzystania w czasie zajęć):

Ćwiczenie 1. Słownik krzyżówkowy

Słownik do tego ćwiczenia znajduje się w pliku: /tmp/dictionaryen.txt.

  1. (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.
  2. (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien wypisać komunikat “Nie podano słowa”.
  3. (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.
  4. (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”.

Ćwiczenie 2. Deszyfrator szyfru przestawieniowego

Słownik do tego ćwiczenia znajduje się w pliku: /tmp/slownikpl.txt.

  1. (1 pkt.) Napisz skrypt, który odszyfruje wiadomość zaszyfrowaną ROT13: wrqan m plse cvah gb fvrqrz
  2. (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).
  3. (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.
  4. (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

Bonus: (1 pkt.) Odgadnij 7-cyfrowy pin – sprawdź jego poprawność programem /tmp/checkpin np. echo 1234567 | /tmp/checkpin.

Ćwiczenie 3. Kreator krzyżówek

Słownik do tego ćwiczenia znajduje się w pliku: /tmp/krzyzowkowe.txt.

  • (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.) 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:

|k|orniszon
|a|rtefakt
|w|oda
|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ą.

|_|_|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|_|
|_|_|_|_|_ _ 
|_|_|_|_|_|_|

Ćwiczenie 4. Lista mailingowa

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:

  1. (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.
  2. (1 pkt.) Dla opcji -a / -‐add – dodaje podany jako argument adres e-mail do pliku listaodbiorcow.
  3. (1 pkt.) Dla opcji -r / -‐remove – usuwa podany jako argument adres e-mail z pliku listaodbiorcow.
  4. (1 pkt.) W 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.txt · ostatnio zmienione: 2019/06/27 15:50 (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