Ich wuerde an deiner Stelle zwei Skripte machen:
[check_mail.sh:
Code:
#!/bin/bash
#user ist gleich erstes argument
user=$1
# check
if test $user == ""; then
echo "usage: check_mail username"
exit
fi
# suche in /var/spool/mqueue
# ohne unterverzeichnisse
# normale Dateien
# groesser als 2024 KByte
# mit name df* und rufe fuer je
# check_mail_helper.sh dateiname $user
# auf
find /var/spool/mqueue -maxdepth 1 -xtype f -size +2024k -name df\* -exec check_mail_helper.sh \{\} $user \;
check_mail_helper.sh:
Code:
#!/bin/bash
#d_datei gleich dem ersten Argument.
d_datei=$1
#user gleich dem zweiten Argument
user=$2
# q_datei = q + datei ab 3. Buchstaben
q_datei=q${d_datei:2}
# finde alle Zeilen mit From an anfang
# nimm nur die erste
# schneide alles vor dem ersten Lehrzeichen weg
# schneide alles ab dem @ weg
# d_user = sendername
d_user=`grep "^From: " $q_datei | head -n 1 | cut -d " " -f 2-` | cut -d "@" -f1
#von besagtem user?
if test $d_user == $user;then
# loesche Datei
# zum testen auskommentiert
# rm $d_datei $q_datei
echo "Loesche: "$d_datei und $q_datei
# mail an betroffenen user
# carbon copy ad admin
MAIL=$d_user@domain.bla.blup
echo "Mailquota ueberschritten" | mail -s "Mailquota" -c adim@domain.bla.blup $MAIL
else
#anderer user
echo ">2M-Datei gehoert "$d_user"; Keine Aktion"
fi
Noch mal zur erklaerung:
Du startest mit (nach chmod u+x check*.sh)
$ checkmail bellert
Daraufhin sucht find passende Dateien und ruft fuer _jede_ einzeln
check_mail_helper dateiname bellert
auf.
check_mail_helper sucht den Benutzernamen,
vergeleicht und bei Uebereinstimmung wirden beide Dateien geloescht und eine Mail an den user mit Kopie an den Admin geschickt.
(Vielleicht sollte man erst loeschen, wenn die Mail erfolgreich geschickt wurde)
Bei einem anderen Benutzer gibts eine Warnmeldung.
Die Schleife steckt also im find.
Deine while Konstruktion mit dem Zeilenweisen Dateilesen ist fuer Shellskripte weniger geeignet. Vielleicht solltes Du dir mal Python oder Perl anschauen. Damit geht sowas leichter.
bye
[Dieser Beitrag wurde von jgbauman am 03. Februar 2001 editiert.]
Lesezeichen