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ń: 9
Ś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
Magna Systems & Engineering

Magna Systems & Engineering

2018.06.15: Witam serdecznie, jesteśmy zainteresowani wykonaniem tego zlecenia. Zajmujemy się tworzeniem stron internetowych, wdrażamy systemy CRM oraz ERP. Kreujemy unikalne rozwiązania wtyczek oraz programów. Projektujemy również grafikę bitmapową rastrową oraz wektorową. Nasza cena za to zlecenie podana jest po Państwa prawej stronie. Czas realizacji zlecenia to maksymalnie 14 dni. Zapraszamy do kontaktu i współpracy z nami. Strona internetowa – magnasys.pl | biuro@magnasys.pl

500 zł

za całość

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