Hallo Am Mittwoch, 8. August 2001 21.57 schrieb Jan Trippler:
prinzipiell ganz einfach, du holst das ganze dir mit opendir in ein Array und machst dann eine schleife, wo du pro $_ ein "du" machst auf /var/spool/mail/{username}. Den Wert, den erhaeltst muss man mit einer regex versehen, dass du den tatsaechlichen Speicherbedarf als Zahl only erhaeltst. Dann kannst du fragen, ob die groesser ist, als das was du zulassen willst, und dann kannst Du das mail verschicken. Wenn Du es nicht an {username}@localhost versenden willst, dann musst du noch eine zusaetzliche Datenbank-Query machen.
Ich schreibe demnaechst so ein Script, und wenn Du willst lasse kann ich es Dir senden.
Um Himmelswillen ;-) Perl ist IMHO an dieser Stelle wieder mal mit Kanonen auf Spatzen geschossen:
<ungetestet> #! /bin/sh max_size=1024
for datei in /var/spool/mail/*; do size_in_kb=`du -sk $datei | cut -f1` test $size_in_kb -gt $max_size && echo "Mailbox voll" | \ mail -s "Warnung vom Postmaster" `basename $datei` done </ungetestet>
In Perl könnte das dann so aussehen (ungetestet und ohne großartiges Fehlerhandling):
<ungetestet> #! /usr/local/bin/perl -w
opendir MDIR, "/var/spool/mail" or die "Fehler $!\n"; my @boxes = readdir MDIR; my $max_size = 1024 * 1024;
foreach (@boxes) { unless (/^\.{1,2}$/) { system ("echo Mailbox voll | mail -s Warnung $_") if (stat ("/var/spool/mail/" . $_))[7] > $max_size; } } closedir MDIR; </ungetestet>
cool, das Perlscript funktioniert. Danke, da hat mir einer das Script gemacht, was ich schon so lange benötige. Leider kapiere ich Programmierung (auch Scriptsprachen) nicht, daher bin ich dafür wirklich dankbar. Eine kleine Frage: Wie könnte man da im Mail Zeilenumbrüche machen? So im Stil: "Deine Mailbox ist voll. Gruss Chef" Gruss Fabian