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
