Laboratorium 7
Transkrypt
Laboratorium 7
Laboratorium 7 (opracowanie dr inż. Grzegorz Kozieł) Ćwiczenie 1 Podstawy tworzenia skryptów Skrypt jest plikiem tekstowym zawierającym polecenia powłoki systemu Linux. Każda linia skryptu może zawierać jedno polecenie powłoki. W pierwszej linii skryptu powinniśmy umieścić informację o powłoce, która będzie wykonywała polecenia umieszczone wewnątrz skryptu. Przykład skryptu wyświetlającego login użytkownika i bieżącą datę: #!/bin/bash whoami date Aby uruchomić skrypt musimy nadać mu prawa wykonania: chmod u+x plik (jeżeli osobą wykonującą będzie właściciel) chmod a+x plik (jeżeli dowolna osoba może wykonać skrypt) Uruchomienie skryptu polega na podaniu ścieżki i nazwy do pliku. Można podać pełną ścieżkę np. /home/student/skrypt lub skorzystać z adresowania względnego (np. wywołując skrypt znajdujący się w katalogu bieżącym) ./skrypt Inną (wygodniejszą) możliwością jest dodanie ścieżki do katalogu ze skryptami do zmiennej systemowej PATH. Dodanie do zmiennej PATH ścieżki do katalogu domowego użytkownika student przyjmie postać: PATH=$PATH:/home/student Zadania: 1. W swoim katalogu domowym utwórz katalog skrypty_imie (w nazwie katalogu wpisz własne imię) 2. Dodaj utworzony katalog do zmiennej PATH 3. Napisz skrypt wyświetlający tekst: Witaj ...(login)....zalogowałeś się na komputerze o IP ...(IP)...ostatni raz logowałeś się ..(data ostatniego logowania). W miejsce nawiasów wstaw odpowiednie informacje uzyskane za pomocą poleceń systemowych 4. Napisz skrypt tworzący w katalogu domowym katalog o nazwie dane. Następnie wewnątrz katalogu dane umieszczający pliki: a. data – zawierający bieżącą datę b. zalogowani – zawierający listę zalogowanych użytkowników c. listing – zawierający szczegółowy listing katalogu domowego użytkownika d. dysk_YYYY_MM_DD – zawierający raport wolnego miejsca na dysku ( nazwa pliku ma zawierać aktualną datę w podanym formacie) 5. Napisz skrypt wyświetlający cztery pierwsze parametry wywołania skryptu oraz własną nazwę. Wskazówka: Parametry wywołania skryptu to wartości (ciągi znaków) podane po nazwie skryptu podczas jego wywoływania np. ./skrypt parametr_1 parametr_2 parametr_3 Wewnątrz skryptu będziemy je widzieli pod zmiennymi oznaczonymi kolejnymi liczbami. Tak więc: ◦ $0 – oznacza nazwę skryptu ◦ $1 – oznacza pierwszy parametr wywołania skryptu ◦ $2 – oznacza drugi parametr wywołania skryptu ◦ itd. ◦ $@ - oznacza wszystkie parametry (zawiera całą listę) ◦ $# - oznacza liczbę parametrów wywołania skryptu 6. Napisz skrypt sumujący wartości dwóch liczb podanych przez użytkownika jako parametry wywołania skryptu. Wyświetl wynik oraz zapisz go w pliku „wynik”. 7. Napisz skrypt, który pobierze od użytkownika dwie liczby i wyświetli ich iloczyn. Wskazówka: Do pobrania wartości użyj instrukcji read x, gdzie x jest nazwą zmiennej, która zostanie użyta do zapamiętania pobranej wartości. 8. Napisz skrypt definiujący trzy dowolne aliasy. Spowoduj uruchamianie skryptu podczas logowania użytkownika poprzez umieszczenie wywołania skryptu w pliku .bash_rc. Sprawdź czy po ponownym zalogowaniu aliasy są dostępne. Ćwiczenie 2 Skrypty warunkowe Użycie instrukcji warunkowych w skryptach Instrukcja warunkowa ma postać: if warunek then instrukcje wykonywane gdy warunek jest spełniony else instrukcje wykonywane gdy warunek nie jest spełniony fi Warunek realizujemy za pomocą polecenia test. Przykładowo sprawdzenie czy istnieje plik o nazwie podanej jako pierwszy parametr wywołania skryptu będzie miał postać: test -e $1 Opcja e sprawdza czy istnieje plik/katalog o podanej nazwie. Wszystkie opcje znajdziemy w manualu do polecenia test. Użycie przedstawionej formy budowania warunku jest mało intuicyjne dla programistów. Dlatego zastąpiono polecenie test nawiasami kwadratowymi. Ten sam warunek przyjmie wówczas postać: [ -e $1 ] Należy zwrócić uwagę na spacje umieszczone wewnątrz nawiasów. Przykład: Napisz skrypt, który sprawdzi czy istnieje plik o nazwie podanej jako parametr wywołania skryptu. #!/bin/bash if [ -e $1 ] then echo „Istnieje plik o nazwie „ $1 else echo „ Nie istnieje plik „$1 fi Zadania: 1. Napisz skrypt sprawdzający, która z dwóch liczb podanych jako parametry wywołania skryptu jest większa. Wyświetl stosowny komunikat. 2. Zmodyfikuj zadanie 4 z poprzedniego laboratorium. Dodaj sprawdzanie czy katalog dane istnieje. Jeżeli tak to usuń pliki znajdujące się wewnątrz niego. Jeżeli nie to utwórz go. 3. Napisz skrypt zliczający zalogowanych użytkowników. Jeżeli liczba użytkowników jest większa niż 5 wyświetl komunikat „dużo zalogowanych” jeżeli nie wyświetl komunikat „mało zalogowanych”. Jeżeli zalogowany jest jedynie jeden użytkownik wyświetl komunikat „Tylko ..(login).. zalogowany” 4. Napisz skrypt sprawdzający czy użytkownik ma prawa wykonania do pliku, którego nazwę podano jako parametr wywołania skryptu. Sprawdź czy plik istnieje. Jeżeli użytkownik ma prawa wykonania wyświetl informację o tym. Jeżeli nie dodaj użytkownikowi prawo wykonania pliku. 5. Napisz skrypt wyświetlający informacje o pliku/katalogu podanym jako parametr wywołania skryptu. Uwzględnij takie informacje jak: a. czy istnieje b. czy jest katalogiem/plikiem zwykłym/blokowym/znakowym/linkiem c. czy mam prawa wykonania Jeżeli plik nie istnieje nie sprawdzaj dodatkowych warunków. 6. Napisz skrypt wykonujący backupy, który w momencie uruchomienia utworzy w katalogu domowym katalog archiwum. Jeżeli katalog istnieje nic nie rób. a. Utwórz w katalogu archiwum katalog o nazwie backup_YYYY_MM_DD_HH_MM_ss (kod literowy to oznaczenie czasu – zamień litery na odpowiednie wartości liczbowe określające czas utworzenia katalogu). Wewnątrz utworzonego katalogu umieść w formie skompresowanej zawartość wybranego katalogu. b. Dołącz do programu sprawdzanie ile jest katalogów wewnątrz katalogu archiwum. Jeżeli jest ich więcej niż 5 usuń najstarszy katalog. Operację usuwania wykonaj przed tworzeniem backupu. c. Zmodyfikuj zadanie b tak aby skrypt prosił użytkownika o potwierdzenie usunięcia najstarszego katalogu 7. Napisz skrypt wyświetlający w kolejności rosnącej 4 liczby podane przez użytkownika.