Guten Morgen,
im Moment schlage ich mich mit der Aufgabe rum, dass ich mehrere SysLog-Dateien aus einem Ringspeicher in eine SysLog-Datei zusammenkopieren will.
Hier im Forum finde ich stets Beispiele für binary-Files.
Hier ist mein Ansatz:
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
#!/usr/bin/perl -w
########################################
# Modules
use strict; # parameter Definition before use them
use File::Copy;
use DateTime; # Libary for Date operation
#######################################
# Parameter Definition
my ($ct,$idx,$idx2,$idx3,$numbers,$inPut,$outPut); # counter parameter
my $tstamp = DateTime->now->set_time_zone('Europe/Berlin'); # Find the Timestamp
my $mydate = $tstamp->ymd;
my $folder = "./workingFolder";
my $OutFolder = "./workingFolder/ReadyLogs/";
my $preFix = "server.log";
my (@filelist,@lines);
###########################
# Main
system("clear");
@filelist = glob($folder.'/server.log.*');
#print join("\n", @filelist,"\n");
rename($folder."/server.log",$folder."/01.log");
$idx = 11;
$idx2 = $idx-1;
for($ct=1;$ct<=10;$ct++){
# print `pwd`; # Output working directory
$idx =sprintf("%02d",$idx); # Put Zero in Front
$inPut =$folder."/".$preFix.".".$idx2;
$outPut =$folder."/".$idx.".log";
# print "Input: $inPut, Output: $outPut \n";
rename($inPut,$outPut) || die "Error during Rename: $!";
$idx--;
$idx2--;
}
for($ct=11;$ct>0;$ct--){
open(INFile,"<",$folder."/".$ct.".log");
open(OFile,">>",$OutFolder."/".$mydate."-ServerMessages.log");
@lines=<INFile>;
print OFile @lines;
close(INFile);
}
Hat jemand wieder einen dieser tollen Tipps für mich?
Die erste For-Schleife sorgt dafür, dass die einzelen SysLog-Dateien in richtiger Reihenfolge durch nummeriert werden.
Danach in For-Schleife zwei versuche ich die jeweiligen Dateien stets in eine Ausgangsdatei zu kopieren.