Mailinglist Archive: opensuse-de (5006 mails)
| < Previous | Next > |
Re: Benachrichtigungs-Script
- From: fabian huesser <linux@xxxxxxxxxxxx>
- Date: Thu, 9 Aug 2001 19:17:21 +0200
- Message-id: <01080919172101.31141@vela>
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
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
| < Previous | Next > |