Nowe posty

Autor Wątek: Wyświetlanie użytkowników  (Przeczytany 312 razy)

Offline ordan0404

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 3
    • Zobacz profil
Wyświetlanie użytkowników
« dnia: 2019-10-28, 12:24:23 »
Mam do zrobienia takie zadanie:
Wyświetl nazwy użytkowników, którzy należą do tej samej grupy, do której należy użytkownik jako który jesteś zalogowany(a) (groups, grep). Jeśli uzytkownik należy do kilku grup
wybierz pierwszą z nich (cut).

Po wpisaniu w terminalu groups wyświetla mi tylko do jakiej grupy należy zalogowany użytkownik i nie bardzo wiem jak zrobić to zadanie. Pomoże ktoś?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2572
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
    • keybase.io/pkraszewski
Odp: Wyświetlanie użytkowników
« Odpowiedź #1 dnia: 2019-10-28, 13:08:09 »
* groups przyjmuje opcjonalny parametr: kogo ma dotyczyć zapytanie
* Użytkowników masz w ogólnodostępnym pliku /etc/users.

Szczujesz wynik pierwszego na grep drugiego.
Paweł Kraszewski
~Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2361
  • 1709
    • Zobacz profil
Odp: Wyświetlanie użytkowników
« Odpowiedź #2 dnia: 2019-10-28, 13:31:09 »
Wyjasnienie jest swietne, ale jesli mozna
to napisalbym jak jak ja to bym zrobil.

Zdanie w zadaniu trzeba troche rozbic bo jest troche zbyt skomplikowane.
Trzeba najpierw znalesc nazwe uzytkownia,
zeby znalesc do jakich grup on nalezy,
zeby potem wyswietlic nazwy uzytkownikow pierwszej znalezionej grupy.


W wyszukiwarce szukam wpisujac
linux + szukana fraza / zdanie / klucz,  np.
Cytuj
linux wyswietlanie zalogowanego uzytkownika
Cytuj
linux wyswietlanie grup

No to zaczynamy...
Szukamy "znalesc nazwe uzytkownia,"
Wpisujac w wyszukiwarke " linux wyswietlanie zalogowanego uzytkownika "
natrafiam na pierwszy wynik  https://www.arturpyszczuk.pl/commands-who.html
$ who
xxx     tty8         2019-10-28 12:12 (:0)
Gdzie "xxx" to moja nazwa uzytkownika.

Potem "znalesc do jakich grup on nalezy,"
po wpisaniu w wyszukiwarke " linux wyswietlanie grup "
i w pierwszym wyniku jest to ale nie wyjasnione  https://www.arturpyszczuk.pl/commands-groups.html
a w drugim  https://linuxiarze.pl/uzytkownik/
Cytuj
3. Aby sprawdzić do jakich grup należysz :
groups nazwa_użytkownika
$ groups xxx
xxx : xxx lp floppy cdrom cdwriter audio video dialout users polkituser
Pokazuje ze pierwsza moja grupa ma identyczna nazwe jak nazwa uzytkownika xxx

No to teraz  " wyswietlic nazwy uzytkownikow pierwszej znalezionej grupy "
szukam " linux wyswietlanie nazwy uzytkownikow i grup "
i pierwszy wynik wyszukiwania  http://computersun.pl/linux/podstawy/uzytkownicy-grupy-w-linuksie-s_79.html
i jest tam wspomniane
Cytuj
W Linuksie istnieją trzy standardowe pliki odnoszące się kolejno do użytkowników, grup i haseł.
Pierwszy z nich to /etc/passwd. Kiedyś przechowywano w nim hasła (ang. password), teraz umieszcza się tam informacje m.in. o użytkownikach.
Nizej w przedstawionym formacie przeczytasz ze linia zawiera nazwe uzytkownika i grupe
No to szukamy wykorzystujac grep + nazwa grupy  + nazwa pliku.

Jeszcze cos.
W zadaniu jest wspomniane 
Cytuj
Jeśli uzytkownik należy do kilku grup
wybierz pierwszą z nich (cut).
Wiec zakladam ze nie mozemy podawac komend po kolei,
abo to dotyczy tylko przy zadaniu " znalesc do jakich grup on nalezy "
Albo jest to dodatkowe zadanie.

Z logiki nigdy nie bylem dobry, takze tu nie pomoge  :D

Aby komendy napisac razem mozna uzyc
- albo " | " (pipe)
- albo zapisac dane do pliku i zniego odczytywac
- albo zapisac dane do zmiennej i uzyc " ; " zeby napisac komendy w tej samej linii
aby operowac na danych / tekscie.

Taka praca nad tekstem roznie sie nazywa
" manipulacja tekstu " https://linux.die.net/Linux-CLI/text-manipulation-tools.html
" filtrowanie tekstu " https://www.tecmint.com/linux-file-operations-commands/
i jeszcze jedna nazwa chyba byla, ale nie pamiętam teraz.

Jak wpiszesz w wyszukiwarke " linux cut " to znajdziesz przyklady,
w jednym z nich  https://www.geeksforgeeks.org/cut-command-linux-examples/
Masz taki przyklad
Cytuj
cut -d " " -f 1 state.txt
Andhra
Arunachal
Assam
Bihar
Chhattisgarh
Czyli ze ucielo wszystko oprocz pierwszego slowa kazdej linii.
Zmieniajac " (field number) " mozesz zmienic wyswietlane slowo,
np  " jakies komendy |  cut -d " " -f3 " wyswieli trzecie slowo kazdej linii.

Taki tylko przyklad budowania takiego " tasiemca ".

Cytuj
who
...
who | cut -d " " -f1
... ( wyswietla tylko nazwe uzytkownika z komendy who)
groups $(who | cut -d " " -f1)
... (wyswietla wszystkie grupy do jakich nalezy uzytkownik z wyniku wyzej)
groups $(who | cut -d " " -f1) | cut -d" " -f3
... ( wyswietla u mnie, pierwsza grupe z wyniku wyzej )
grep $(groups $(who | cut -d " " -f1) | cut -d" " -f3) /etc/passwd
... ( wyswietla wszystkie linie zawierajace nazwe grupy z wyniku wyzej )

Ktore jak widac jest zbiorem uzytych komend


Tekst troche poprawilem, bo sie sam pogubilem :D
Juz poprawiony
« Ostatnia zmiana: 2019-10-28, 14:52:42 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline ordan0404

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 3
    • Zobacz profil
Odp: Wyświetlanie użytkowników
« Odpowiedź #3 dnia: 2019-10-29, 00:06:54 »
Dzięki wielkie, pomogło zrozumieć.

Offline 920806

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 128
    • Zobacz profil
Odp: Wyświetlanie użytkowników
« Odpowiedź #4 dnia: 2019-10-29, 00:39:36 »
Ja polecam użyć zapoznać się z narzedziem awk :

np.
who | awk '{print $1}'


Fajnie się tym formatuje output  :)
Steve Wozniak nie wiedział .. ~ ~ https://www.youtube.com/watch?v=FG1AQcGGSec ~~ / "Uparty jak nigdy" /P3@CE , L0\/E & rock'|\|'roII