1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use Net::FTP;
$ftp = Net::FTP->new("HOST", Debug => 0)
or die "Cannot connect to some.host.name
: $@";
$ftp->login("USER",'PWD')
or die "Cannot login ", $ftp->message;
$ftp->cwd("/var/log/radius")
or die "Cannot change working directory ", $ftp->message;
$newerr=0;
@files=$ftp->dir or $newerr=1;
push @ERRORS, "Can't get file list on $_ $!\n" if $newerr;
$ftp->quit if $newerr;
next if $newerr;
print "Got list $_\n";
print @files;
$ftp->binary();
foreach $name ('radius.log', 'radius.log-20110405') {
$ftp->get($name,$name);
}
$ftp->quit;
$res = system("gzip.exe -d radius.log-20110405.gz') ");
open (in,"<radius.log");
@radius= <in>;
close in;
open (in,"<radius.log-20110405");
@radius_alt1= <in>;
close in;
open(OUT,">radius.log");
print OUT "@radius";
print OUT "@radius_alt1";
CLOSE(OUT);
2011-04-06T08:46:44 QWERTZ7Zeile 45: hast du eine Funktion CLOSE selbst definiert oder meintest du close?Erhalte außerdem noch die Fehlermeldung: undefined subroutine &main::CLOSE called at script.pl line 74)
QuoteWas soll denn da genau automatisiert werden, magst du das genauer erläutern?Nun muss natürlich noch das mit dem Datum automatisiert werden, kann mir da wer helfen?
QuoteZeile 45: hast du eine Funktion CLOSE selbst definiert oder meintest du close?
QuoteWas soll denn da genau automatisiert werden, magst du das genauer erläutern?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use strict;
22 use warnings;
23 use Data::Dumper;
24 use Net::FTP;
25
26 my $ftp;
27 my $newerr;
28 my @files;
29 my @ERRORS;
30 my $name;
31 my $res;
32 my @radius;
33 my @radius_alt1;
34
35 $ftp = Net::FTP->new("HOST", Debug => 0) or die "Cannot connect to some.host.name: $@";
36 $ftp->login("USER",'PWD') or die "Cannot login ", $ftp->message;
37 $ftp->cwd("/var/log/radius") or die "Cannot change working directory ", $ftp->message;
38 $newerr=0;
39 @files=$ftp->dir or $newerr=1;
40 push @ERRORS, "Can't get file list on $_ $!\n" if $newerr;
41 $ftp->quit if $newerr;
42 next if $newerr;
43 print "Got list $_\n";
44 print Dumper(@files); #schau dir an welche files du im array hast
45 $ftp->binary();
46 foreach (@files) {
47 #ToDo: nur log file und files mit timestamp <= 14 Tagen herunterladen
48 #command ist vermutlich Systemabhängig
49 $ftp->get($_);
50 }
51 $ftp->quit;
52 $res = system("gzip.exe -d radius.log-20110405.gz') ");
53 open (IN,"<radius.log");
54 @radius= <IN>;
55 close IN;
56 open (IN,"<radius.log-20110405");
57 @radius_alt1= <IN>;
58 close IN;
59 open(OUT,">radius.log");
60 print OUT "@radius";
61 print OUT "@radius_alt1";
62 close(OUT);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
21 use strict;
22 use warnings;
23 use Data::Dumper;
24 use Net::FTP;
25
26 our $ftp;
27 my $newerr;
28 my @files;
29 my @ERRORS;
30 my $name;
31 my $res;
32 my @radius;
33 my @radius_alt1;
34
35 $ftp = Net::FTP->new("HOST", Debug => 0) or die "Cannot connect to some.host.name: $@";
36 $ftp->login("USER",'PWD') or die "Cannot login ", $ftp->message;
37 $ftp->cwd("/var/log/radius") or die "Cannot change working directory ", $ftp->message;
38 $newerr=0;
39 @files=$ftp->dir or $newerr=1;
40 push @ERRORS, "Can't get file list on $_ $!\n" if $newerr;
41 $ftp->quit if $newerr;
42 next if $newerr;
43 print "Got list $_\n";
44 print Dumper(@files); #schau dir an welche files du im array hast
45 $ftp->binary();
46
47 &process_files(\@files);
48
49 $ftp->quit;
50
51 sub process_files {
52 my @files = shift @_;
53 my $letzteAenderung = 14; #letzte Änderung vor 14 Tagen
54 foreach (@files) {
55 if ( int( -M $_ ) <= $letzteAenderung ) {
56 if ($ftp->get($_)) {
57 $ftp->get($_);
58 }
59 if (`gzip.exe -d $_`) {
60 my @unzip_files = `gzip.exe -d $_`;
61 &process_files(\@unzip_files);
62 }
63 else {
64 if (-f "radius.log") {
65 open (IN,">>radius.log");
66 print IN "$_";
67 close IN;
68 } else {
69 open (IN,">radius.log");
70 print IN "$_";
71 close IN;
72 }
73 }
74 }
75 }
76 }