[Tech] Bash(o Perl), ftp e mail.....

Dinogen dinogen@supereva.it
Gio 11 Gen 2001 17:14:58 CET


At 10.48 11/01/01 +0100, you wrote:
>Salutoni a tutti.
>
>Devo realizzare uno script (bash, preferibilmente oppure perl..) che compia

Col perl puoi fare entrambe le cose e anche controllare i risultati e 
comportarti di conseguenza.
Non hai bisogno di sendmail o altro.

Ti servono i moduli Net::FTP (istallato di solito di default) e il modulo 
Mail::Sender che trovi su http://www.cpan.org.

Ecco due esempi che uso io in produzione:

------- EMAIL -------------------
use Mail::Sender;
...
sub Email()
{

     print "Invio e-mail al presidio...";

     ref ($sender = new Mail::Sender
          ({from => 'pippo@mail.pippo.it',
            smtp => "mailserver"})) or die "$Mail::Sender::Error\n";

     (ref ($sender->MailFile(
                             {to =>'pippo@mail.pippo.it',
                              subject => "KFlusso $sLogFile",
                              msg => "In allegato file di log $sLogFile ed 
il FileReport sFileReport.",
                              file => $sLogFile . "," . $sFileReport
                              }))
      and print "Mail sent OK."
      )
         or die "$Mail::Sender::Error\n";


}

-----MAIL-----------------------------------------------------
use Net:FTP;
....
sub Invia()
{
     my $bOk;

     StampaLog "Invio del file $sFileRichiesta";

     $bOk = 0;
     $nTentativi = 1;
     do
     {
         sleep $nPausaInvia;
         print "Invio...\n";
         StampaLog "Tentativo di invio n. $nTentativi.";

         my $ftp;
         if ($ftp = Net::FTP->new($ipAddress)) {
             $ftp->login($UsernameBlo, $PasswordBlo);
             $ftp->ascii;
             $ftp->delete($sFileCriptato);
             $bOk = $ftp->put($sFileRichiesta);
             $ftp->close;
         } else {
             $bOk = 0;
         }

         sleep 5;

     } until ($bOk or ++$nTentativi > $nMaxTentativiInvia);

     if (!$bOk)
     {
         StampaLog "Numero massimo di tentativi di invio raggiunto.";
     }
     else
     {
         StampaLog "Invio riuscito.";
     }

     return $bOk;
}
--------------------------------------------------------------




Ciao!!______________       ICQ# 92789615
Dinogen - Are you for a United World? I am!
http://dinogen.tripod.com  :  http://siena.linux.it





Maggiori informazioni sulla lista flug-tech