bash - sprawdzenie czy istnieje użytkownik

0

Prosze o pomoc w napisaniu skryptu który w katalogu \etc\passwd sprawdzałby czy dany użytkownik istnieje, i jesli bedzie istniał to ma wyswietlic tylko jego nazwe, męcze sie juz z tym długo i mi nie wychodzi. Wiem ze trzeba użyć polecenia grep oraz petli if.

#!/bin/bash

echo  "Podaj nazwe pliku do wyswietlenia"

read B1

if [ -e /etc/"$B1" ] ; then
cat /etc/"$B1"|awk -F ":" '{print $1,$4}'
else
    echo "Podany plik nie istnieje"
fi
 

mozna to jakos zmodyfikować na szukanie użytkownika?

0

Oraz zamieścić post w ogłoszeniach drobnych jeśli sam nic nie napisałeś, to też jest bardzo ważne.

0

Można. Zobacz co ci na konsoli wypluje: cat /etc/passwd | grep "jakiś_login"

0
#!/bin/bash
 
echo  "Podaj nazwę użytkownika:"
 
read a
 
if [ -f/etc/passwd|grep "$a" ] ; then
cat /etc/passwd|grep |awk -F: '{print $1}' |grep user
else
    echo "Podany użytkownik nie istnieje"
fi

 

Co robie zle?

0
Imrpo napisał(a):

Co robie zle?

[piotr@localhost ~]$ ./test.sh
Podaj nazwę użytkownika:
piotr
./test.sh: line 7: [: brakujący `]'
./test.sh: line 7: greppiotr: nie znaleziono polecenia
Podany użytkownik nie istnieje
0

Podpowie ktos jak to powinno wyglądać?

czy jakos tak, to zrobic?

 

ZMIENNA=`cut -d: -f1 /etc/passwd | grep user` 

if [ -z $ZMIENNA ] ; then 
  echo "Nie ma takiego użytkownika" 
else 
  echo $ZMIENNA 
fi 

1

Rozwiązanie dla innych:

 
#!/bin/bash

echo "podaj nazwe uzytkownika" 
read b; 

a=`cut -d: -f1 /etc/passwd | grep "$b"` 
if [ -z $a ] ; then 

echo "brak uzytkownika w katalogu" 

else 
echo "uzytkownik "$b" znajduje sie w katalogu" 
fi

Myliłem znak ` z ' ...czlowkiek uczy sie na bledach

0

Można prościej (poprawiłem również formatowanie i parę błędów):

#!/bin/bash

echo "Podaj nazwę użytkownika: "
read user

if cut -d: -f1 /etc/passwd | grep "$user" > /dev/null ; then
  echo "użytkownik \"$user\" znajduje się w katalogu"
else
  echo "brak użytkownika w katalogu"
fi

1 użytkowników online, w tym zalogowanych: 0, gości: 1