Laboratorium trzecie Skrypty powłoki
Transkrypt
Laboratorium trzecie Skrypty powłoki
Laboratorium trzecie Skrypty powłoki Wojciech Penar 31 marca 2012 Cel Przyswojenie podstaw pisania skryptów powłoki bash. Wprowadzenie Skrypty powłoki wykorzystywane są w celu automatyzacji rozmaitych zadań w systemach komputerowych. Zwykle mają postać plików tekstowych zawierających ciąg poleceń wykonywanych przez interpreter. W śród języków skryptowych istnieją zarówno takie, które są dostępne dla różnych platform (systemów operacyjnych) — np. Perl, Python, jak i związane bezpośrednio z jednym bądź grupą systemów operacyjnych — Windows Action Script, sh, bash. Dzisiejsze ćwiczenia polegają na samodzielnym napisaniu kilku skryptów, wybranych spośród listy zadań do wykonania. Aby zaliczyć zajęcia należy poprawnie wykonać co najmniej 3 zadania. Zwracam uwagę na formatowanie treści skryptu (wiersze powinny być krótsze niż 80 znaków), umieszczenie w komentarzu informacji o autorach oraz kontrolę błędów. Skrypty powinny posiadać opcję pozwalającą wyświetlić pomoc dotyczącą sposobu użycia, a w razie podania niewłaściwych parametrów – informować o tym fakcie. Przy wykonywaniu zadań przydatne mogą być materiały dodatkowe z sekcji 2. 1 Ćwiczenia do wykonania 1. Napisz skrypt wyświetlający pozdrowienie w języku angielskim w zależności od pory dnia: • do godziny 12 – good morning • od 12:00 do 17:00 – good afternoon • po godzinie 17 – good evening Czas powinien być pobierany z systemu. 2. Napisz skrypt kopiujący lub przenoszący zawartość kartoteki w inne miejsce. Skrypt powinien zapytać użytkownika, jaką operację chce wykonać, a kończąc zadanie powinien podać ile plików i o jakiej łącznej objętości przeniósł/skopiował. 3. Napisz skrypt, który wyszuka wszystkie pliki z ustawionym atrybutem SUID, a następnie zapisze do wskazanego pliku sumy md5 dla tych plików (pomocne narzędzie md5sum). Plik docelowy powinien być argumentem skryptu. 4. Napisz skrypt zliczający pliki w zadanym katalogu. Skrypt powinien zliczać ilość wszystkich regularnych plików, ilość plików wykonywalnych (w tym SUID) oraz liczbę dowiązań symbolicznych. Podpowiedź: man test 5. Napisać funkcję sprawdzają, czy dany rok jest rokiem przestępnym. Następnie napisać skrypt, który dla dowolnej ilości argumentów sprawdza, czy rok podany jako argument jest rokiem przestępnym. 1 6. Napisz skrypt, który obliczy głębokość drzewa podkatalogów zaczynającego się w bieżącym katalogu. Katalog bez podkatalogów ma głębokość 1. 2 Materiały dodatkowe 2.1 Przydatne narzędzia sh-utils pakiet podstawowych narzędzi dla powłoki, posiada bogatą dokumentację man (na początek man sh-utils) textutils przydatnych narzędzi operujących na tekście, również posiada dokumentację w postaci podręcznika 2.2 Przydatne materiały pomocnicze Po polsku http://materialy.adelanto.pl/files/Materialy0.pdf “ściąga” do zajęć man bash obszerna i wyczerpująca dokumentacja dostępna w systemie http://www.dief.republika.pl/main.html kurs autorstwa Sołtysa. Po angielsku http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html podstawy pisania skryptów powłoki http://tldp.org/guides.html szczególnie polecam Bash Guide for Beginners oraz Advanced Bash-Scripting Guide 3 Dla ciekawych świata Rozszerz funkcjonalność skryptu z zadania 3 tak, aby sprawdzał, czy sumy kontrolnie nie zmieniły się. Skrypt powinien sygnalizować zmianę sumy kontrolnej oraz usuniecie pliku. Działanie skryptu powinno być następujące: • jeśli podano jeden parametr i jest to nazwa nieistniejącego pliku obliczyć sumy kontrolne i zapisać do pliku, jeśli plik istnieje sprawdzić sumy kontrolne • dodać parametry -s i -c – pierwszy wymusza zapisanie sum kontrolnych do pliku, drugi - wymusza sprawdzenie Skrypt powinien sprawdzać możliwość zapisu/odczytu pliku z sumami kontrolnymi oraz informować o niemożności obliczenia sumy kontrolnej, gdy taka okoliczność zachodzi. W trybie sprawdzania sum kontrolnych dodaj sprawdzenie, czy nie pojawiły się nowe pliki SUID w systemie. 2