Skrypt Bash

(1836770)

Szczecin

To zlecenie jest nieaktualne.

Zobacz podobne zlecenia dla programistów rzadkich specjalności

Zobacz podobne zlecenia

Możliwość pracy zdalnej: TAK
Budżet zlecenia: do uzgodnienia
Liczba zgłoszeń: 8
Średni koszt realizacji: 200 zł/całość  

Zlecę wykonanie skryptu w bashu.

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

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

1. Opcja "Utworz grupe"
Opcja ta powinna stworzyć grupę w systemie o podanej przez użytkownika nazwie.
Dostępność opcji musi być determinowana tym, czy skrypt został uruchomiony w trybie użytkownika root.
Jeśli tak się nie stało - funkcja powinna być niewidoczna.
Skrypt powinien najpierw sprawdzić, czy grupa, której nazwa została podana już istnieje. Jeśli istnieje - powinien poinformować o tym użytkownika i przerać tworzenie

Podpowiedź:
Aby z pliku grup wybrać tylko pierwszą kolumnę, proszę "zaprzyjaźnić się" z parserem tekstu AWK (man awk). Trzeba będzie odczytać plik z grupami, podzielić jego każdy wiersz na kolumny (elementem rozdzielającym jest znak dwukropka) i sprawdzić, czy istnieje już taka nazwa grupy.


2. Opcja "Utworz uzytkownika"
Dostępność opcji musi być determinowana tym, czy skrypt został uruchomiony w trybie użytkownika root.
Opcja ta powinna stworzyć nowego użytkownika i dodać go do grupy. Nazwa użytkownika i nazwa grupy będzie podawana przez użytkownika. Skrypt musi sprawdzić czy użytkownik o podanej nazwie nie istnieje już w systemie. Skrypt musi sprawdzić czy podana przez użytkownika grupa istnieje. Po spełnieniu warunków, skrypt musi poprosić użytkownika o wprowadzenie hasła dla nowo stworzonego konta.

Podpowiedź:
Podobnie jak w poprzednim zadaniu optymalnym będzie wykorzystanie parsera tekstowego awk. Tym razem dodatkowo do analizy plików użytkownika.
 

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

 

Propozycje wykonania zlecenia
Data zgłoszenia Cena brutto
Łukasz Magdziarz

Łukasz Magdziarz

2018.06.18: Witam, Chętnie podejmę się przygotowania takiego skryptu. Mam spore doświadczenie w pracy ze skryptami bash. Pozdrawiam

do
negocjacji

GreyDarkIcoInfo
Kamil Zasępa

Kamil Zasępa

2018.06.14: Witam, jestem zainteresowany zleceniem. Kontakt k.zasepa@adminserver.pl lub gg 46044682. pozdrawiam Kamil Zasępa

350 zł

za całość

GreyDarkIcoInfo
Tomasz Root

Tomasz Root

2018.06.14: Czekam na Państwa kontakt. Portfolio: tomlot.eu/portfolio ★ kontakt@tomlot.eu, Fb i Skype: Tomasz Root ★12 lat w IT!

555 zł

za całość

GreyDarkIcoInfo
Data zgłoszenia Cena brutto
Rafał Behrendt

Rafał Behrendt

2018.06.14: Witam, chętnie podejmę się wykonania tego zadania. ProsE o kontakt: rav5738@gmail.com Pozdrawiam Rafał

90 zł

za całość

GreyDarkIcoInfo
Marcin Lachowicz

Marcin Lachowicz

2018.06.14: Dzień dobry, chętnie podejmę się zlecenia. Mam duże, komercyjne doświadczenie w programowaniu w bashu. Proszę o więcej szczegółów: lachowicz.marcin1@gmail.com Marcin Lachowicz

190 zł

za całość

GreyDarkIcoInfo
Paweł Kowal

Paweł Kowal

2018.06.14: Witam. Jako programista z 15-letnim zapleczem, z łatwością napiszę ten skrypt. Płatność z dołu po wykonanej pracy. paulancer@o2.pl

200 zł

za całość

GreyDarkIcoInfo
Krystian Wuczek

Krystian Wuczek

2018.06.14: Dzień Dobry, Wykonam to zlecenie. Proszę o szczegóły i kontakt na mail: krystian.wuczek@wp.pl .

200 zł

za całość

GreyDarkIcoInfo
Andrzej Zynk

Andrzej Zynk

2018.06.14: Witam, proszę o kontakt conol@gmx.com

do
negocjacji

GreyDarkIcoInfo