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.

Podobne dokumenty