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

Podobne dokumenty