[linux-l] Shell-Script

Robert C. Helling r.helling at iu-bremen.de
Do Mär 13 12:40:02 CET 2008


On Thu, 13 Mar 2008, Leander Sukov wrote:

> Hallo,
>
> ich bräuchte jemanden der ausgesprochen fit in Shell-Scripten ist - wobei es
> auch sein kann, dass das, was ich brauche nur per Perl geht:
>
> Es soll aus einer Verzeichnisstruktur
>
> /var/kunden/mails
> ................../kunde/
> ...................../email at domain/
> ......................../cur/ /new/ /tmp/ /Spam/
>
> Ausgelesen werden, wieviele Mails im im Ordner Spam liegen und möglichst auch
> Absender und Betreff und dann eine Mail an die E-Mail-Adresse geschickt
> werden die in der Ordnerbezeichnung /email at domain/ steht.
>
> Das Script soll durch die gesamte Verzeichnisstruktur von /var/kunden/mails/
> gehen, bis alle /email at domain/-Ordner erfasst und abgearbeitet sind.
>
> Kann das jemand? Falls ja, könnte er mich bitte per PM anschreiben. Kostenlos
> soll das ja nun nicht gerade sein (reich werden kann man aber auch nicht)

Etwa so:
         O /                   \ O
-------  X   ----cut here----  X  --------
         O \                   / O
#!/usr/bin/perl

# SpamZaehler und Erinnerer 
# Von Robert Helling (helling at atdotde.de)
# Published under the GNU Public License (GPL)

use File::Find;
use Mail::Sendmail;
use strict;

my $start_dir = '/var/kunden/mails';
my $folder_name = 'Spam';
my $sender = 'Leander Sukov <leander.sukov at leander-sukov.de>';

find(\&zaehlen,$start_dir);

sub zaehlen{
     my $spams;

     next unless $_ eq $folder_name;

     $File::Find::dir =~ /\/([^\/]+\@[^\/]+)\//;
     my $name = $1;

     my $spams = 0;
     open(IN, $folder_name) || die "$0:Cannot open $File::Find::name : $!";
     while(<IN>){
 	$spams++ if /^From /;
     }
     close IN;

     if($name){
 	my %mail = ( To      => $name,
             From    => $sender,
             Message => "You have $spams messgages in $File::Find::name!\n"
            );
 	sendmail(%mail) or die $Mail::Sendmail::error;
     }
}
         O /                   \ O
-------  X   ----cut here----  X  --------
         O \                   / O

Ich konnte das Mailversenden nicht ausprobieren, da ich hier keinen 
MTA laufen habe und auch meine Verzeichnisse anders aussehen. Ich nehme 
an, dass Spam dann eine mailfolder Datei ist, in der man nur die From am 
Zeilenanfang zaehlen muss. Sonst nehme man da ein passenderes Modul von

http://search.cpan.org/modlist/Mail_and_Usenet_News/Mail

Viele Gruesse
Robert

-- 
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oO
Robert C. Helling     Elite Master Course Theoretical and Mathematical Physics
                       Scientific Coordinator
 		      Ludwig Maximilians Universitaet Muenchen, Dept. Physik
print "Just another   Phone: +49 89 2180-4523  Theresienstr. 37, rm. 440
     stupid .sig\n";   http://www.atdotde.de


Mehr Informationen über die Mailingliste linux-l