Die  Grünwalds
 
Home  |  Mitglieder  |  Kontakt  |  Galerie  |  Info's
 
 
Wissenswertes zu Linux
 
 
 

Aufgaben, die man mit RPM und der BASH schnell lösen kann

Mit den folgenden Beispielen versuche ich immer zu zeigen, wie man die Mechanismen (Schleifen, Pipes, Variablen) einer shell zur Lösung komplexerer Fragestellungen verwenden kann.

Sie sind vielleicht nicht 1 zu 1 auf die Praxis zu übertragen aber sehr leicht auf ähnliche Probleme zu adaptieren.

Auch erhebe ich keine Anspruch auf Vollständigkeit und bin auch immer dankbar für Verbesserungsvorschläge oder Fehlerkorrekturen.
Also her damit :)


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:
  1. Wie schicke ich eine email an einen Benutzer ?
  2. Wie bekomme ich eine Liste aller Benutzer ?
  3. Wie kann ich diese Liste genauer definieren ?
  4. 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
 




¨Anybrowser Campaign¨   ¨Red Hat Inc.¨

By Jan Grünwald <jan@gruenwalds.de>