#!/usr/bin/perl -w use strict; use Net::FTP; use Mail::Mailer; my $host = 'www.trustedftpsite.org'; my $user = 'anonymous'; my $pass = 'updatepuller@avtrustingclient.org'; my $remote_dir = '/pub/antivirus/NAV/signatures'; my $destination_dir = 'current-sig'; my $type = 'sendmail'; my $mailprog = Mail::Mailer->new($type); my @lupd = (); if(-e "./lastupdate.txt") { open(LASTUPDATE,"./lastupdate.txt") or die "Error while opening lastupdate.txt ($!)"; chomp( @lupd = ); close(LASTUPDATE) or die "Error while closing lastupdate.txt ($!)"; } my %haveit; @haveit{ @lupd } = (1) x @lupd; my $ftp = Net::FTP->new($host, Debug => 1); $ftp->login($user,$pass) or die "Could not connect to ftp server ($!)"; my @listing = grep /x86\.exe$/i, $ftp->ls($remote_dir); my @newupdate; $ftp->type("I"); for my $file (@listing) { next if $haveit{$file}; if ($ftp->get($file, "$destination_dir/avdefs.exe")) { mailer($file); push @newupdate, $file; } } $ftp->quit; open(NEWUPDATE,">>./lastupdate.txt") or die "Couldn't open lastupdate.txt for appending ($!)"; print NEWUPDATE map "$_\n", @newupdate; close(NEWUPDATE) or die "Closing lastupdate.txt failed ($!)"; sub mailer { my $file = shift; my %headers = ( 'To' => 'iwannaknow@trustingclient.org', 'From' => 'Antivirusupdater@yournewdefs.com', 'Subject' => 'New AntiVirus Signatures brought down' ); $mailprog->open(\%headers); print $mailprog "The Latest AntiVirus signature is $file.\n"; $mailprog->close; }