Hello Leo,

This skript looks every xxx minutes if there is an new patternfile.
I hope your wish will come :-)

------

####
#   use::
####

use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTTP::Headers;
use Mail::Sendmail;
use LWP::Simple;
use Time::Local;
use Win32::Process;
$| = 1;

####
#   declaration of the variables, not all inludes below 
####

&timeee(1);
my $a_logfilename = "update_pattern_trendmicro_EXC";
my $a_logfile = "\\\\mchh257e\\d\$\\logs\\PatternVirenscanner\\PatternCheck\\" . 
&timeee . ".log";
my $a_logfile_BAK = $a_logfile . ".bak";
#my $patternverteilprogram = "dummy-patternverteilprogram.pl";

# english and german web-site
my $prot = "http";
my $proxy_port = "";
my $ftp_proxy = "";     
my $url_patternstatus_e = "http://www.trendmicro.com/download/pattern.asp";;
my $url_patternstatus_g = 
"http://de.trendmicro-europe.com/enterprise/support/pattern.php";;
my $cn4_pattern_share = "\\\\mchh257e\\d\$\\pattern\\";

#smtp
my $mailhost = "";
my $mailfrom =  "";

#check last status file
my $program_last_status_file = "NICHTloeschen_program_last_status_file.lspf";
my $running_prg_timestamp_file = "NICHTloeschen_ueberwa_update-pattern.lspf";
my ($header_Date,$header_Server,$header_Client_Date,$header_Title);
my $url_getpattern;
my $http_status_code;
my $exist_unzip_failure_count = 0;
my $exist_wget_failure_count = 0;
my $set_write_version_flag = 0;
my $current_pattern_version = " ";
my $last_pattern_version = " ";
my $last_pattern_update_time = "unbekannt da Programm $0 erst spaeter gestartet wurde";
my $http_failure_count;
my $firstrun = 0;
my $save_new_patternfile = 0;
my $m_check_running_prg_count = 0;
my $unzip_prg = "unzip.exe";
my $wget_prg = "wget.exe";
my $m_check_running_prg_count_SET = 48;
my $sleeptimer = 3600;          #lrx    900

####
#   main
####

if (-e $a_logfile_BAK) { unlink($a_logfile_BAK) };
if (-e $a_logfile) { rename($a_logfile ,$a_logfile_BAK) };
open (PRG_Status,">$a_logfile") || die "cannot open $a_logfile $!";

if (-R $program_last_status_file) { 
        open (PROGRAMLASTSTATUSFILE, "$program_last_status_file");
                while (<PROGRAMLASTSTATUSFILE>) {
                        chomp $_;
                        if (m/last_pattern_version_from_stopped_program: (\d+)/i ) {
                                if ($1 > 111 ) {
                                        $last_pattern_version = $1                     
                                                 #720 patternversion at 2000 june 10
                                        };
                                print "***" . &timeee(1) . "***import 
last_pattern_version: $last_pattern_version from file: $program_last_status_file\n";
                                print PRG_Status "***import last_pattern_version: 
$last_pattern_version from file: $program_last_status_file\n";
                                $firstrun = 3;
                        }
#       Format of $program_last_status_file
#       last_pattern_version: 729                       
                }
        close (PROGRAMLASTSTATUSFILE);
}               
else {
        $set_write_version_flag = 1;
        print "***" . &timeee(1) . "***ACHTUNG:\tnach dem NEUstart des Programms 
$0\n\tkonnte der letzte Statuswerte\n\tder Patternversion nicht aus der Datei: 
$program_last_status_file gelesen werden.\n\tNUR AUS DIESEM GRUND wird das Programm 
den Wert von \"last_pattern_version\" auf den neu ermittelten Wert von den WWW-Seiten 
setzen.\n\t\Sollte sich waehrend des vorangegangen Programmstops die Patternversion 
erhoeht haben,\n\tso wird die fruehere Aenderung nicht sichtbar.\n";
        print PRG_Status "***" . &timeee(1) . "***ACHTUNG:\tnach dem NEUstart des 
Programms $0\n\tkonnte der letzte Statuswerte\n\tder Patternversion nicht aus der 
Datei: $program_last_status_file gelesen werden.\n\tNUR AUS DIESEM GRUND wird das 
Programm den Wert von \"last_pattern_version\" auf den neu ermittelten Wert von den 
WWW-Seiten setzen.\n\t\Sollte sich waehrend des vorangegangen Programmstops die 
Patternversion erhoeht haben,\n\tso wird die fruehere Aenderung nicht sichtbar.\n";
        my $subject = "! ACHTUNG: nach einem NEUstart des Programms $0 konnten die 
letzten Statuswerte nicht nicht eingelesen werden\n";
        my $mailmessage = "ACHTUNG: nach dem NEUstart des Programms $0 konnte der 
letzten Wert der letzten aktuelle Patternversion ";
           $mailmessage .= "nicht aus der Datei $program_last_status_file eingelesen 
werden. Das Programm wird deshalb den Wert von <last_pattern_version> ";
       $mailmessage     .= "auf den neu ermittelten Wert setzen der in den naechsten 2 
Durchgaengen aktuell aus dem WWW ermittelt werden wird. ";
       $mailmessage     .= "Um ganz sicher zu sein, dass sich die Pattern Version 
w�hrend des NICHTlaufens des Programms $0 ";
       $mailmessage     .= "nicht erhoeht hat, empfiehlt es sich nach einer neuen 
Viren Patterndatei auf folgenden Web-Sites:\n";
       $mailmessage     .= "$url_patternstatus_e und\n";
       $mailmessage     .= "$url_patternstatus_g\n";
       $mailmessage     .= "zu suchen.\n\n";
       $mailmessage     .= "Diese Mail wurde von dem Programm $0\n";
       $mailmessage     .= "auf dem Rechner: $ENV{'COMPUTERNAME'} erstellt.\n";
       $mailmessage     .= "Ein Logfile:\n$a_logfile kann eingesehen werden.\n";
       
        &informmm($mailhost,$mailfrom,$subject,$mailmessage);
}

while () {
#       check if exist unzip.exe in the $0 working directory, if not send a message + 
mail      
        if (!-X $unzip_prg || !-X $wget_prg){
                ++$exist_unzip_failure_count;
                ++$exist_wget_failure_count;
                print "***" . &timeee(1) . "\n\t\t***ACHTUNG:\tdas erforderliche 
Programm $unzip_prg oder $wget_prg wurde offenbar von Person X\n\t\taus dem 
Arbeitspfad $0 des Perl Patternueberwachungsprogramm geloescht.\n\t\tAus diesem Grund 
wird das Programm $0 bei einer neuen Patterndatei\n\t\tnicht ordnungsgemaess arbeiten 
koennen.\n\t\tMANUELLER EINGRIFF ERFORDERLICH. \n";
                print PRG_Status "***" . &timeee(1) . "\n\t\t***ACHTUNG:\tdas 
erforderliche Programm $unzip_prg oder $wget_prg wurde offenbar von Person X\n\t\taus 
dem Arbeitspfad $0 des Perl Patternueberwachungsprogramm geloescht.\n\t\tAus diesem 
Grund wird das Programm $0 bei einer neuen Patterndatei\n\t\tnicht ordnungsgemaess 
arbeiten koennen.\n\t\tMANUELLER EINGRIFF ERFORDERLICH. \n";
                my $subject = "! ACHTUNG ! ein erforderliches  Programm $unzip_prg 
oder $wget_prg wurde offenbar von Person ? aus dem Arbeitsverzeichnis des Perl 
Programms geloescht";
                my $mailmessage = "ACHTUNG ! ein erforderliches  Programm $unzip_prg 
oder $wget_prg wurde offenbar von Person ? aus dem Arbeitsverzeichnis";
                $mailmessage    .= "des Perl Patternueberwachungsprogramm geloescht. 
Aus diesem Grund wird das Programm $0 \n";
                $mailmessage    .= "bei einer neuen Patterndatei nicht ordnungsgemaess 
arbeiten koennen.\n\n";
                $mailmessage    .= "EIN MANUELLER EINGRIFF ist ERFORDERLICH. \n\n";
                $mailmessage    .= "Diese Mail wurde von dem Programm $0\n";
                $mailmessage    .= "auf dem Rechner: $ENV{'COMPUTERNAME'} erstellt.\n";
                $mailmessage    .= "Ein Logfile:\n$a_logfile kann eingesehen 
werden.\n";
                if ($exist_unzip_failure_count == 1) {
                        ++$exist_unzip_failure_count;
                        print "***sende Mail, weil Programm $unzip_prg nicht 
ausfuehrbar ist\n";
                        print PRG_Status "***" . &timeee(1) . "***sende Mail, weil 
Programm $unzip_prg nicht ausfuehrbar ist\n";
                        &informmm($mailhost,$mailfrom,$subject,$mailmessage);
                }
                if ($exist_unzip_failure_count == 51) {
                        $exist_unzip_failure_count = 0;
                        print "***setzte Fehlerzaehler das das Programm $unzip_prg 
nicht existiert auf $exist_unzip_failure_count\n";
                        print PRG_Status "***setzte Fehlerzaehler das das Programm 
$unzip_prg nicht existiert auf $exist_unzip_failure_count\n";
                }
                if ($exist_wget_failure_count == 1) {
                        ++$exist_wget_failure_count;
                        print "***sende Mail, weil Programm $wget_prg nicht 
ausfuehrbar ist\n";
                        print PRG_Status "***" . &timeee(1) . "***sende Mail, weil 
Programm $wget_prg nicht ausfuehrbar ist\n";
                        &informmm($mailhost,$mailfrom,$subject,$mailmessage);
                }
                if ($exist_wget_failure_count == 51) {
                        $exist_wget_failure_count = 0;
                        print "***setzte Fehlerzaehler das das Programm $wget_prg 
nicht existiert auf $exist_wget_failure_count\n";
                        print PRG_Status "***setzte Fehlerzaehler das das Programm 
$wget_prg nicht existiert auf $exist_wget_failure_count\n";
                }
        }       
#       start at english website
        print "***\n";
        print PRG_Status "***\n";       
        
($current_pattern_version,$url_getpattern,$http_status_code,$http_failure_count) = 
&gethttppp("$prot","$proxy_port","$url_patternstatus_e");
        print "***" . &timeee(1) . "***last_pattern_version: $last_pattern_version\n";
        print PRG_Status "***" . &timeee(1) . "***last_pattern_version: 
$last_pattern_version\n";
        if ( $http_status_code == "200 OK") {
                $current_pattern_version = lc ($current_pattern_version);
                $last_pattern_version = lc ($last_pattern_version);
#               for the first run of the program only (for the first while loop)
                $firstrun++;
                if ($firstrun < "2" ) {
                        $last_pattern_version = $current_pattern_version;
                        if ( $set_write_version_flag == 1) {
                                open (PROGRAMLASTSTATUSFILE, 
">$program_last_status_file" ) || &program_last_status_file_write_log;
                                print PROGRAMLASTSTATUSFILE "# !!! diese Datei sollte 
nur modifiziert werden, um die aktuelle Virenpatternversion einzutragen, weil das 
Virenpatternprogramm nicht bei der aktualisierung lief,  Fragen an Rene Lange, Tel. 
23218 !!!\n";
                                print PROGRAMLASTSTATUSFILE 
"last_pattern_version_from_stopped_program: $last_pattern_version\n";
                        close (PROGRAMLASTSTATUSFILE);  
                        $set_write_version_flag = 0;
                        print "\n\n\n***" . &timeee(1) . "***write the 
last_pattern_version: $last_pattern_version to file: $program_last_status_file\n\n\n";
                        print PRG_Status "\n\n\n***" . &timeee(1) . "***write the 
last_pattern_version: $last_pattern_version to file: $program_last_status_file\n\n\n";
                        }
                }
                        elsif ( ($current_pattern_version gt $last_pattern_version) && 
($last_pattern_version != undef) ) {
#lrx            elsif ( ("$current_pattern_version" == "$last_pattern_version") && 
($current_pattern_version > 1) ) {   #debug
                        
&getnewpatternfileee($current_pattern_version,$url_getpattern,$cn4_pattern_share,$last_pattern_update_time);
                        $last_pattern_update_time = &timeee(1);
                        $last_pattern_version = $current_pattern_version;
                        ++$save_new_patternfile;
                        print "\n\n***" . &timeee(1) . "***set the 
last_pattern_version to $current_pattern_version\n\n";
                        print PRG_Status "\n\n***" . &timeee(1) . "***set the 
last_pattern_version to $current_pattern_version\n\n";
#                       write last program status file  
                                open (PROGRAMLASTSTATUSFILE, 
">$program_last_status_file" ) || &program_last_status_file_write_log;
                                        print PROGRAMLASTSTATUSFILE "# !!! diese Datei 
sollte nur modifiziert werden, um die aktuelle Virenpatternversion einzutragen, weil 
das Virenpatternprogramm nicht bei der aktualisierung lief,  Fragen an Rene Lange, 
Tel. 23218 !!!\n";
                                        print PROGRAMLASTSTATUSFILE 
"last_pattern_version_from_stopped_program: $last_pattern_version\n";
                                close (PROGRAMLASTSTATUSFILE);
                                print "\n***" . &timeee(1) . "***write the 
last_pattern_version: $last_pattern_version to file: $program_last_status_file\n";
                                print PRG_Status "\n***" . &timeee(1) . "***write the 
last_pattern_version: $last_pattern_version to file: $program_last_status_file\n";
                                        sub program_last_status_file_write_log {
                                                print "\n\n***" . &timeee(1) . 
"***FAILURE to write the last_pattern_version to $program_last_status_file\n\n";
                                                print PRG_Status "\n\n***" . 
&timeee(1) . "***FAILURE to write the last_pattern_version to 
$program_last_status_file\n\n";
                                        }                               
                        }       
        $current_pattern_version = "";
        }

#       start at german website
        print "***\n";
        print PRG_Status "***\n";       
        
($current_pattern_version,$url_getpattern,$http_status_code,$http_failure_count) = 
&gethttppp("$prot","$proxy_port","$url_patternstatus_g");
        print "***" . &timeee(1) . "***last_pattern_version: $last_pattern_version\n";
        print PRG_Status "***" . &timeee(1) . "***last_pattern_version: 
$last_pattern_version\n";
        if ( $http_status_code == "200 OK") {
                $current_pattern_version = lc ($current_pattern_version);
                $last_pattern_version = lc ($last_pattern_version);
                if ( ($current_pattern_version gt $last_pattern_version) && 
($last_pattern_version != undef) ) {
#lrx            if ( ("$current_pattern_version" == "$last_pattern_version") && 
($current_pattern_version > 1) ) {      #debug
                        
&getnewpatternfileee($current_pattern_version,$url_getpattern,$cn4_pattern_share,$last_pattern_update_time);
                        $last_pattern_update_time = &timeee(1);
                        $last_pattern_version = $current_pattern_version;
                        ++$save_new_patternfile;
                        print "\n\n***" . &timeee(1) . "***set the 
last_pattern_version to $current_pattern_version\n\n";
                        print PRG_Status "\n\n***" . &timeee(1) . "***set the 
last_pattern_version to $current_pattern_version\n\n";
#                       write last program status file
                                open (PROGRAMLASTSTATUSFILE, 
">$program_last_status_file") || &program_last_status_file_write_log;
                                        print PROGRAMLASTSTATUSFILE "# !!! diese Datei 
sollte nur modifiziert werden, um die aktuelle Virenpatternversion einzutragen, weil 
das Virenpatternprogramm nicht bei der aktualisierung lief,  Fragen an Rene Lange, 
Tel. 23218 !!!\n";
                                        print PROGRAMLASTSTATUSFILE 
"last_pattern_version_from_stopped_program: $last_pattern_version\n";
                                close (PROGRAMLASTSTATUSFILE);
                                print "\n\n***" . &timeee(1) . "***write the 
last_pattern_version to $program_last_status_file\n\n";
                                print PRG_Status "\n\n***" . &timeee(1) . "***write 
the last_pattern_version to $program_last_status_file\n\n";
                                        sub program_last_status_file_write_log {
                                                print "\n\n***" . &timeee(1) . 
"***FAILURE to write the last_pattern_version to $program_last_status_file\n\n";
                                                print PRG_Status "\n\n***" . 
&timeee(1) . "***FAILURE to write the last_pattern_version to 
$program_last_status_file\n\n";
                                        }                               
                }
        $current_pattern_version = "";
        }
if (-e $a_logfile_BAK) { unlink($a_logfile_BAK) };
if (-e $a_logfile) { rename($a_logfile ,$a_logfile_BAK) };
open (STATUS_LAST_TIME,">$running_prg_timestamp_file") || print "\n\n***" . &timeee(1) 
. "***FAILURE cannot create $running_prg_timestamp_file to write 
&TMJSMS_to_epocsec\n\n";
        print STATUS_LAST_TIME &TMJSMS_to_epocsec;
close (STATUS_LAST_TIME);




-----Urspr�ngliche Nachricht-----
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Durocher, Leo
Gesendet: Montag, 5. April 2004 14:21
An: [EMAIL PROTECTED]
Betreff: Auto FTP script


I need to have a script that is scheduled to run once a day to get the latest Virus 
definition.  The file always has sdat4*.exe  and I have a networked folder that keeps 
this file.  

What I am trying to do is look to see if the file name has increased its name (4347) 
if so then download the new one.  If it is the same then exit. Also I will have to 
copy this file to two folders and rename the file in one folder.

I am currently doing this via a DOS Batch.  It is very limited.   Ideally I
would like to take the name of the file I download and add it to a Batch file 
(replacing the last file name)

Any help would be greatly appreciated!

Leo
_______________________________________________
Perl-Win32-Admin mailing list [EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to