[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