Eine email an alle "nicht System" Benutzer schicken
Bei einer solchen Fragestellung versuche ich immer das Problem in kleinere
Teilprobleme zu zerlegen.
Hier wäre das:
- Wie schicke ich eine email an einen Benutzer ?
- Wie bekomme ich eine Liste aller Benutzer ?
- Wie kann ich diese Liste genauer definieren ?
- Wie bekomme ich das ganze kombiniert ?
Die erste Frage könnte man mit dem Kommando mail lösen:
$ echo "Oberwichtig bla bla bla ... " | mail -s "Wichtige Mitteilung" BENUTZER
|
Eine Liste aller Benutzer kann man auf verschieden Arten bekommen.
z.B. mit cut oder awk aus der Datei /etc/passwd
cut:
$ cut -d: -f1 /etc/passwd
|
awk:
$ awk -F: '{print $1}' /etc/passwd
|
So, nun wollen wir aus der Liste die wir bekommen haben alle System-User entfernen.
Dazu stellen wir fest, das "normale" Benutzer eine UID zwischen 500 und 65000 (z.B.
auf einer Red Hat Distri) haben.
Für sowas ist jetzt awk um Welten besser geeignet als cut :)
$ awk -F: '$3>=500 && $3<=65000 {print $1}' /etc/passwd
|
OK, jetzt müssen wir nur noch unser Benutzerliste mit dem email Kram verbinden.
Dazu benutzen wir eine for Schleife der BASH:
$ for user in $(awk -F: '$3>=500 && $3<=65000 {print $1}' /etc/passwd); do
> echo "Oberwichtig bla bla bla ... " | mail -s "Wichtige Mitteilung" $user
> done
|
|