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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam,
Taki prosty skrypcik posiadam.
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
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
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
Offline
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:
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)
Offline
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
Offline
Strony: 1