Thread Mehrere .gz-Dateien holen, entpacken und beinhaltende Text-Dateien zusammenführen (6 answers)
Opened by QWERTZ7 at 2011-04-06 10:46

suresh
 2011-04-07 14:56
#147451 #147451
User since
2010-10-12
109 Artikel
BenutzerIn
[default_avatar]
Ich bin selbst noch recht neu in Perl!
Schau dir mal die Lösung unten an, allerdings ungetestet:


Code: (dl )
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 }

View full thread Mehrere .gz-Dateien holen, entpacken und beinhaltende Text-Dateien zusammenführen