Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-11-06 11:42:38

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Jak nie wyskakiwać ze skryptu BASH

Witam,

Taki prosty skrypcik posiadam.

Kod:

echo -e "1. Dodaj jedno konto uzytkownika"
echo -e "2. Dodaj wiele kont uzytkownikow"
echo -e "3. Zablokuj konto uzytkownika"
echo -e "4. Odblokuj konto uzytkownika"
echo -e "5. Generuj nowe haslo dla uzytkownika"
echo -ne "Prosze wybrac jeden z tematow. Wyboru dokonuje sie wyborem cyfry [1 do 5]:  "
read WYBOR

Po dokonaniu wyboru coś się wykonuje.
Jeśli pojawi się błąd to skrypt kończy działanie. Wygląda to tak

Kod:

  if [ $WYBOR -eq "3" ]; then
        #echo "3 ---> Blokowanie konta"
        echo -en "Podaj nazwe uzytkownika do zablokowania: "
        read USER
        if [ -z $USER ]; then
                echo -e "BLAD: Nie wpisano nazwy uzytkownika!!!"
                exit 1
                else
                cut -f1 -d: /etc/passwd |grep $USER > /dev/null
                OUT=$?
                 if [ $OUT -eq 0 ];then
                        usermod -L "$USER"
                        echo -e "Uzytkownik [ .. $USER .. ] zostal zablokowany"
                        else
                         echo -e "BLAD: Taki uzytkownik [ .. $USER .. ] nie istnieje"
                fi
        fi

chciałbym żeby wyskoczył komunikat i ponowił próbę uzyskania nazwy użytkownika.
Próbowałem tak

Kod:

        if [ -z $USER ]; then
                echo -e "BLAD: Nie wpisano nazwy uzytkownika!!!"
                echo -en "Podaj nazwe uzytkownika do zablokowania: "
                read USER
                cut -f1 -d: /etc/passwd |grep $USER > /dev/null

Ale jak ktoś w tym nie poda nazwy użytkownika skrypt się wywala bo grep ma pusty parametr :(

Macie na to pomysł ?

Pozdrawiam
Redelk


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

#2  2008-11-06 11:51:02

  urug - Członek DUG

urug
Członek DUG
Skąd: Częstochowa
Zarejestrowany: 2008-04-22
Serwis

Re: Jak nie wyskakiwać ze skryptu BASH

ZZ=""
while [ -z "$ZZ" ]
do
    echo "Podaj nazwe uzytkownika: "
    read ZZ
done

cut -f1 -d: /etc/passwd |grep $USER > /dev/null

Może tak?


Pozdrawiam, Tomek

Offline

 

#3  2008-11-06 11:59:25

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Jak nie wyskakiwać ze skryptu BASH

Po pierwsze: źle formatujesz, else zauważyłęm dopiero po którymś przeczytaniu...
Po drugie: nadużywasz echo -e.

możesz podawanie wsadzieć w pętlę while:

Kod:

if [ $WYBOR -eq "3" ]; then
#echo "3 ---> Blokowanie konta"                                                                                                                  
    while [ -z $USER ]; do                                                                                                                        
        echo -en "Podaj nazwe uzytkownika do zablokowania: "
        read USER
        if [ -z $USER ]; then
            echo -e "BLAD: Nie wpisano nazwy uzytkownika!!!"
        else
            cut -f1 -d: /etc/passwd |grep $USER > /dev/null
            OUT=$?
            if [ $OUT -eq 0 ];then
                usermod -L "$USER"
                echo -e "Uzytkownik [ .. $USER .. ] zostal zablokowany"
            else
                echo -e "BLAD: Taki uzytkownik [ .. $USER .. ] nie istnieje"
            fi
        fi
    done
fi

Ponadto przy "taki użytkownik nie istnieje" pokusiłbym się o dodanie zapytania, czy chcesz podać nazwę ponownie.

Ostatnio edytowany przez azhag (2008-11-06 12:02:23)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#4  2008-11-06 12:02:27

  redelek - Członek DUG

redelek
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2008-07-17

Re: Jak nie wyskakiwać ze skryptu BASH

azhag napisał(-a):

Po pierwsze: źle formatujesz, else zauważyłęm dopiero po którymś przeczytaniu...
Po drugie: nadużywasz echo -e.

możesz podawanie wsadzieć w pętlę while:

Kod:

if [ $WYBOR -eq "3" ]; then
#echo "3 ---> Blokowanie konta"                                                                                                                  
    while [ -z $USER ]; do                                                                                                                        
        echo -en "Podaj nazwe uzytkownika do zablokowania: "
        read USER
        if [ -z $USER ]; then
            echo -e "BLAD: Nie wpisano nazwy uzytkownika!!!"
        else
            cut -f1 -d: /etc/passwd |grep $USER > /dev/null
            OUT=$?
            if [ $OUT -eq 0 ];then
                usermod -L "$USER"
                echo -e "Uzytkownik [ .. $USER .. ] zostal zablokowany"
            else
                echo -e "BLAD: Taki uzytkownik [ .. $USER .. ] nie istnieje"
            fi
        fi
    done
fi

OOO super dzięki.
Nadurzywam echo -e bo będą kolorowane komunikaty, a dzięki opcji -e wyświetlają się kolorki w bash. Tak jest na Ubunciaku :)

Pozdrawiam
Redelek


Pozdrawiam
Redelek
--------------------------------------------------------
Polecam hosting ViPower https://vipower.pl/panel/aff.php?aff=208, TikTalik https://tiktalik.com/pl/

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)