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