Nowe posty

xx Debian 9.13 i dovecot 2.2.27 problem (0)
Dzisiaj o 15:36:56
xx Skrypty linux Prosze o pomoc (7)
Dzisiaj o 11:17:55
xx Strona o testach penetracyjnych, hackingu (23)
2022-01-22, 22:28:27
xx Ocena odpowiedzi - włączenie funkcji forum (1)
2022-01-18, 17:00:43
xx Instalacja Linux pop!os na laptopie bez systemu (10)
2022-01-13, 19:00:51
xx Stary Asus x71sl , nie startuje żaden linux (8)
2022-01-11, 19:00:52
xx HDMI - problem w poprawnym działaniu (0)
2022-01-11, 13:09:19
xx Search redirecting (4)
2022-01-08, 12:12:02
xx Jak to wersja (24)
2022-01-07, 00:22:09
xx Zadanie (1)
2022-01-06, 09:34:34

Autor Wątek: (Skrypt)Bash usuwanie kont  (Przeczytany 4718 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