Szanowny Gościu, witaj na Forum Informatyków!

Jeżeli odwiedzasz nas po raz pierwszy, zapraszamy do darmowej i prostej rejestracji, która da Ci pełny dostęp do funkcjonalności forum. Jeżeli natomiast posiadasz już konto, możesz zalogować się.

Zapraszamy!

skrypt bash

Administracja serwerów z rodziny Linux, BSD, SunOS czy Solaris

skrypt bash

Postprzez smyko_k » 3 cze 2017, o 00:31

Ogromna prośba. Na zaliczenie przedmiotu muszę napisać skrypt, ale mój poziom w tym temacie jest bardzo słaby.
Proszę chociaż o pierwszych kilka punktów z poniższej listy:

I. Stworzyć menu w pliku skryptu o następującej postaci

*************************************************************************************************************************************

*************************************
* 1 - Zbierz informacje o systemie *
* 2 - Wyswietl zapisane informacje *
* 3 - Utworz grupe *
* 4 - Utworz uzytkownika *
* 5 - Pobierz i przetworz plik *
* 6 - Wyszukaj frazy w plikach *
* 0 - Opuszczenie skryptu *
*************************************

Wybierz opcje [1,2,3,4,5 lub 0] >

*************************************************************************************************************************************

Ogolne wymagania:
a) w zadaniu, za każdym razem ekran powinien być czyszczony (menu zawsze pojawia się na czystym ekranie)
b) wybranie opcji nr 5 powoduje opuszczenie skryptu
c) obsługa menu powinna być wykonana za pomocą instrukcji case
d) każde wykonanie polecenia z menu powinno być zatrzymane na 2 sekundy (zapoznaj się z komendą sleep) po to, by użytkownik mógł zobaczyć efekt
e) każda z opcji powinna być zrealizowana za pomocą instrukcji w skrypcie + funkcji
f) każda wartość powtarzalna powinna być zdefiniowana jako zmienna, np. w funkcji sleep będziemy korzystali zawsze (w każdym miejscu) z opóźnienia 2 sekundowego, zatem wartość tego opóznienia powinna być zdefiniowana jako zmienna,np delay_time=2. Wywołanie w kodzie będzie miało postać sleep $delay_time

1. Opcja "Zbierz informacje o systemie"
Opcja ta powinna tworzyć plik o nazwie zapisanej w zmiennej system_info_file.
Plik po wygenerowaniu powinien wygladać w sposób następujący:

*************************************************************************************************************************************

*** Informacje o systemie ***
Zalogowany uzytkownik : xubuntu
Katalog domowy : /home/xubuntu
Informacje o pamieci:
----------------------------------------------------------------------
total used free shared buffers cached
Mem: 2111348736 431050752 1680297984 0 64303104 182923264
-/+ buffers/cache: 183824384 1927524352
Swap: 1991241728 0 1991241728
----------------------------------------------------------------------

Calkowita przestrzen na dysku
----------------------------------------------------------------------
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 18959528 2569420 15438916 15% /
udev 1023684 4 1023680 1% /dev
tmpfs 412376 788 411588 1% /run
none 5120 0 5120 0% /run/lock
none 1030932 88 1030844 1% /run/shm
Temporary 668669948 121460040 547209908 19% /media/sf_Temporary
/dev/sdb1 7819328 499664 7319664 7% /media/USB DISK
----------------------------------------------------------------------

Przestrzen katalogu domowego uzytkownika:
31M /home/xubuntu

*************************************************************************************************************************************

Ogolne wymagania:
a) mechanizm generujący informacje o systemie ma być zapisany za pomocą funkcji o nazwie system_info()
b) proszę skorzystać ze zmiennych środowiskowych do uzyskania informacji o elementach systemu
c) jeśli skrypt zostanie uruchomiony z prawami root'a (np. przez znaną komendę sudo) - powinien w sekcji "Przestrzen katalogu domowego uzytkownika" wyświetlić "Przestrzeń katalogów domowych wszystkich użytkowników". Do wyświetlenia informacji o przestrzeni należy skorzystać z komendy du -sh [nazwa_katalogu]

Podpowiedź:
Należy skorzystać z właściwości, że użytkownik root posiada identyfikator użytkownika o wartości 0. Aby pobrać identyfikator należy skorzystać z komendy id -u. Dla porządku najlepiej zapisać wynik tej komendy w zmiennej,np. o nazwie userid - przyda się później w skrypcie. Katalogi domowe użytkowników znajdują sie w lokalizacji /home/

d) za każdym razem skrypt powinien sprawdzać czy istnieje plik o nazwie zdefiniowanej w zmiennej $system_info_file. Jeśli plik istnieje - to powinien najpierw zostać usunięty. Każdorazowo na ekranie ma wyświetlić się informacja o aktualnie wykonywanej czynności,np.

Usuniecie istniejacego pliku $system_info_file
Tworzenie pliku $system_info_file
Zapisano informacje o systemie

e) po wykonaniu wszystkich czynności skrypt ma odczekać liczbę sekund zdefiniowaną w zmiennej $delay_time i kontynuować działanie

2. Opcja "Wyswietl zapisane informacje"

Wyświetla na ekranie informacje zapisane w pliku o nazwie określonej zmienną $system_info_file - po odczytaniu danych z pliku system czeka na naciśnięcie dowolnego przycisku informując o tym użytkownika. Jeśli plik nie istnieje - wyświetla odpowiedni komunikat i czeka czas określony zmienną $delay_time.

Podpowiedź:
Oczekiwanie na naciśniecie dowolnego klawisza można zrealizować za pomocą następującej instrukcji:
read -p "Wcisnij dowolny klawisz aby kontyuowac... " -n1 -s

*************************************************************************************************************************************

Ogólny szkielet skryptu powinien wyglądać w sposób następujący :

#!/bin/bash

[tutaj deklaracja wszelkich zmiennych]
opcja=
userid=$(id -u)
...

[tutaj deklaracja funkcji]
function system_info()
{
echo "*** Informacje o systemie ***"
...
}

[tutaj główna pętla skryptu]

until [ "$opcja" -eq "0" ]; do
...
case "$opcja" in
"1") ... ;;
...
esac
done
smyko_k
 
Posty: 1
Dołączył(a): 2 cze 2017, o 22:27

Powrót do Administracja UNIX