ASU - laboratorium/miniprojekt `użytkownicy`. • •

Transkrypt

ASU - laboratorium/miniprojekt `użytkownicy`. • •
ASU - laboratorium/miniprojekt 'użytkownicy'.
Zapoznanie ze sposobem tworzenia kont i konfiguracją środowiska pracy użytkowników.
Zadanie wspólne dla wszystkich uczestników kursu (8 pkt)
Napisać skrypt do zakładania, kasowania i modyfikowania użytkowników, który będzie także konfigurował ich
środowisko pracy. Powinna istnieć możliwość:
• zakładania użytkownika z wyborem przy tym wolnego uid;
• opcjonalnie — wybór uid ze sprawdzeniem, czy jakiś istniejący użytkownik nie ma już takiego;
• generowania losowego hasła;
• kopiowania standardowych plików kropkowych z zadanego katalogu do katalogu domowego;
• zapisywanie danych użytkownika (login, uid, hasło) do jakiegoś pliku do odczytu tylko dla roota;
• modyfikacji grup, do których należy użytkownik oraz innych danych dotyczących użytkownika (np. login
shell);
• kasowania kont użytkowników.
Skrypt powinien pracować w dwóch trybach
• wsadowym, w którym wszystkie dane podawane będą jako parametry w linii poleceń
• interakcyjnym, w którym będzie się komunikował z administratorem za pomocą ładnego okienkowego
interfejsu i umożliwiał np. wybór grup, shellów, użytkowników do skasowania przy pomocy przewijanych list
menu.
Uwaga! Przy tworzeniu interfejsu należy skorzystać z perlowego modułu Tk.
Zadania indywidualne (7 pkt)
Informacje ogólne:
•
indywidualny numer projektu = ostatnia cyfra z numeru indeksu
•
skrypty wyłącznie w języku powłoki bash z użyciem standardowych narzędzi typu tr, awk, grep, sed itp
(nie używać perla).
•
skrócony opis działania (używania) po podaniu parametru --help
•
PEŁNE sprawdzenie poprawności parametrów, istnienia plików wejściowych itp.
•
wynik na standardowe wyjście lub do pliku (w zależności od parametru: np. -f nazwa_pliku lub -f-)
Projekt 0
Napisać skrypt rozpoznający (patrz polecenie 'file') pliki graficzne i filmowe a następnie generujący dla każdego z
nich miniaturkę mieszczącą się w podanym w parametrach wejściowych prostokącie. Zdjęcie (film) ma mieć
zachowane proporcje boków. Nazwa miniaturki musi zawierać przyrostek _small tuż przed rozszerzeniem pliku.
Użyć pakietu imagemagic oraz ffmpeg. Jako parametr można podać także katalog, wtedy zostaną
przekonwertowane wszystkie pliki w katalogu lub (w zależności od przełącznika) w całym drzewie podkatalogów.
Projekt 1
Konwersja napisów do filmów z formatu klatkowego do formatu czasowego i odwrotnie. Parametrem ma być fps
filmu i ew przesunięcie w przód lub w tył liczone w sekundach.
Projekt 2
Zapisywanie całego katalogu, grupy katalogów oraz kopiowanie dysku CD na nowa płytę. Użyć standardowych
narzędzi systemu do odczytania płyty (dd) i nagrania (cdrecord/wodim, mkisofs/genisoimage) itp. Wprowadzić
możliwość trybu interaktywnego (pytanie użytkownika o parametry itp).
Projekt 3
Wypisać drzewo katalogów (bez plików) zaczynając od korzenia podanego jako parametr wejściowy. Używać
wyłącznie standardowych narzędzi typu sed, grep, find itp. Drzewo ma być narysowane przy użyciu grafiki
tekstowej.
Projekt 4
Konwersja pliku tekstowego do html. Format pliku tekstowego:
•
paragrafy oddzielone pusta linia
•
obrazy w pliku źródłowym zapisane w postaci [nazwa_pliku.jpg], czyli nazwa pliku otoczona nawiasami
kwadratowymi. Obrazy, które mają zostać wyświetlone są zapisane w katalogu 'images'.
•
tekst pochylony otoczony w pliku źródłowym znakami [spacja]_ i _[spacja].
Projekt 5
Liczenie średniego odchylenia bezwzględnego od średniej (mean absolute deviation). Dane (liczby rzeczywiste w
formacie część_całkowita.część_ułamkowa) zapisane w pliku tekstowym – jedna liczba w linii.
Projekt 6
Rozpakowywanie plików dowolnych plików odpowiednim narzędziem, gzip, tar, unrar itp. Informacja o rodzaju
kompresji odczytana z wyniku polecenia 'file'. Zależnie od podanych parametrów ma umożliwiać rozpakowanie
pojedynczego pliku, kilku podanych plików, plików z listy zawartej w innym pliku tekstowym lub wszystkich
plików w podanym katalogu i jego podkatalogach.
Projekt 7
Odwracalne usuwanie plików. Nazwy plików przekazane w linii poleceń nie są usuwane ale kompresowane (jeśli
nie są już skompresowane polecenie 'file' dla sprawdzenia) i przesuwane do katalogu ~/.trash_bin. Skrypt ma
także sprawdzać czy katalog ~/.trash_bin zawiera pliki starsze niż 48 godzin i usuwać je. Skrypt powinien
umożliwiać usuwanie całych drzew katalogów.
Projekt 8
Napisać skrypt grający w kółko i krzyżyk. Skrypt najpierw pyta, kto ma pierwszy ruch, ew. wykonuje go, potem
cyklicznie wypisuje tablicę i pyta użytkownika o kolejne posunięcie.
o | x |
------------| x |
-----------| o |
Twój ruch (wiersz, kolumna)?
Projekt 9
Przekonwertować tekst podany jako argument do alfabetu Morse'a w ten sposób, że pod każdą sekwencją kropek i
kresek pojawia się odpowiednia litera. Np.:
$morse.sh tekst
... _._. ._. .. .__.
t
e
k s t
Warunkiem zaliczenia projektu jest zaliczenie zadania wspólnego i zadania indywidualnego. Oddanie obydwu
skryptów na zajęciach 10 stycznia 2013 r.
Piotr Pałka

Podobne dokumenty