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

QWERTZ7
 2011-04-06 10:46
#147411 #147411
User since
2011-03-22
33 Artikel
BenutzerIn
[default_avatar]
Hi Leute, habe mal wieder ein Problem:

Ich habe einen FTP-Server auf dem mehrere Dateien liegen. Von dem sollen automatisiert nun alle Dateien geladen werden, die ein Erstelldatum von heute bis vor 2 Wochen haben.
Es gibt eine .log-Datei (aktuelle Datei) und der Rest sind als .gz gepackte log-Dateien.

Dateinamen sind:
radius.log (aktuelle Datei)
und z.B. radius.log-20110405.gz --> entpackt radius.log-20110405 (Endung also .log-20110405)

Wenn nun alle Dateien geladen sind sollen diese entpackt werden und an die radius.log gehängt werden, sodass ich nur eine große radius.log erhalte. Die restlichen Dateien sollten daraufhin gelöscht werden.

Was ich bis jetzt habe:

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
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);


Da habe ich bisher testweise ein paar händisch eingetragene Dateien runtergeladen, entpackt und an die radius.log gehängt, klappt auch ganz gut. (Erhalte außerdem noch die Fehlermeldung: undefined subroutine &main::CLOSE called at script.pl line 74)

Nun muss natürlich noch das mit dem Datum automatisiert werden, kann mir da wer helfen?

Gruß
Last edited: 2011-04-06 10:49:59 +0200 (CEST)

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