Nowe posty

xx Problem z Linux Lite po instalacji (1)
Dzisiaj o 15:19:31
xx Dystrybucja pod HP Omen (7)
Dzisiaj o 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: (Skrypt)Bash usuwanie kont  (Przeczytany 5017 razy)

Jaro89

  • Gość
(Skrypt)Bash usuwanie kont
« dnia: 2011-02-07, 22:06:40 »
Witam. Stoję przed dylematem.
Wymyśliłem sobie stworzenie skryptu w bashu, który miałby na celu usuwanie kont wszystkich użytkowników oraz najlepiej wszystkich danych tych użytkowników, których konta się przedawniły.
Skrypt miałby podczas uruchomienia zapytać o limit dni. I np po wpisaniu 5 ma usunąć wszystkie konta, na które nikt się nie logował od 5 dni.
Dodatkowo skrypt miałby tworzyć plik raport w którym znalazły by się nazwy użytkowników którzy zostali usunięci lub informacja o braku  kont do usunięcia.
Tak naprawdę wydawało mi się, że skrypt nie będzie trudny ale narazie do niczego konstruktywnego nie doszłem. Nawet nie wiem czy taka operacja jest możliwa. Prosiłbym o poważną pomoc :D bo nie mam pojęcia jak to zrealizować. Siedzę w książkach na temat linuxa szukam po necie i nic. Proszę was o pomoc :)

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
(Skrypt)Bash usuwanie kont
« Odpowiedź #1 dnia: 2011-02-08, 01:10:07 »
Sprawdzasz najpierw /etc/passwd, żeby wiedzieć jacy są userzy w systemie.
Wczytujesz wyniki linia po linii:
while read linia; do
...
done < /etc/passwd
Potem sprawdzasz ostatnie logowania:
man lastlog
Do tego oczywiście awk, żeby powycinać odpowiednie pola.

Gdy już znajdziesz listę userów do usunięcia, używasz `deluser`.

Raport oczywiście robisz prostym "echo >>" przy każdym usunięciu.

To na pewno ci się przyda:
http://www.ournet.pl/kursbasha/main.html

arctgx

  • Gość
(Skrypt)Bash usuwanie kont
« Odpowiedź #2 dnia: 2011-02-08, 14:47:19 »
Cytat: ultr
while read linia; do
...
done < /etc/passwd
Potem sprawdzasz ostatnie logowania:
man lastlog
Do tego oczywiście awk, żeby powycinać odpowiednie pola.
Nawet niejeden wrzucony przez Ciebie przykład z przekierowaniem, read i czasem z BASH_REMATCH (nie pamiętam czy z ustawianiem IFS dla dobrego podziału na pola) obalał tę oczywistość - przynajmniej w granicach basha od pewnej wersji w górę.

Jaro89

  • Gość
(Skrypt)Bash usuwanie kont
« Odpowiedź #3 dnia: 2011-02-08, 15:46:05 »
ultr o widzisz trochę mi pomogłeś lecz nadal wszystkiego nie kminie. Po prostu mam za małą wiedzą i za mało czasu by to zrobić :D Jednak jeśli możesz pomóż mi jeszcze trochę
tam jest opcja wyświetlenia użytkowników którzy się nie logowali ileś czasu przez komende lastlog -t X za x liczba w dniach.
Czy da się to przerobić tak by wczytywało tylko liczbę dni, którą podał administrator na początku skryptu

echo Podaj liczbę dni
read okres

i później. Nie wiem czy dobrze zrobiłem ale nie wiem jak zastosować opcje userdel bez podawania nazwy konkretne4go użytkownika do usunięcia.

Nie jestem na 100% pewny ale wyobrażam sobie że skrypt będzie działał mniejwięcej w  ten sposób?
będzie plik w którym linijka pod linijką będą wpisywane nazwy użytkowników którzy przekroczyli limit i skrypt w pętli będzie schodził coraz niżej i usuwał użytkownika którego nazwę aktualnie wczytuje?

Witam ponownie. Prawie mam już gotowy skrypt. Znaczy już problem z usuwaniem nie mam znaczy się jeszcze nie jest to wszystko super stabilne ale zadanie skrypt spełnia.
Problem mam jeszcze z komendą
lastlog -t X myślałem że ta komenda pokazuje uzytkownikow którzy nie logowali się od X dni jednakże moja interpretacja okazała się chybiona bo ta komenda pokazuje uzytkownikow którzy logowali się przed X dni temu znaczy że jak wpisze np 2 to pokazuje mi użytkowników którzy logowali się przed (dziś wtorek) to znaczy przed niedzielą. A chodzi mi o to by wyswietlało tych co sie NIE logowali od 2 dni