FlorianL
03-07-2007, 10:58
Hallo zusammen, ich hab mir ein simples perlscript gebastelt das files per tar und gzip packt und nen date-string anhängt, funktioniert auch tadellos, blöderweise stellt sich jetzt raus das die funktion in ein bestehendes (ksh-)shellscript eingegliedert werden muss.
Ich halte perlscripts für die besseren shellscripts und habe auch einfach keine ahnung davon, weil ichs wie gesagt, für sinnlos halte, man schraenkt sich ja nur ein damit...
genug von meiner persönlichen meinung, anforderung ist anforderung und so wirds halt gemacht...
kann mir jemand nen kleinen stoß in die richtige richtung geben? hier ist erstmal mein script damit ihr wisst wovon ich sprech:
#!/usr/bin/perl
#
# Logfile rotation Script
#
# Usage: logroll.pl <logfile>
#
# Author: F.L.
# Version: 1.0 Date: 03.07.2007
#
######################################
use strict; # Keine globalen Variablen zulassen
use warnings; # Warnungen ausgeben
my $inputfile = $ARGV[0]; # Parameter einlesen und der Variable zuweisen
sub tarzip {
# unix-date zu human readable konvertieren
my $datestring = scalar(localtime);
# aufsplitten des strings in einzelne variablen
my @date = split(/ /, $datestring);
# unseren date-string formatieren
my $dateformat = ("$date[1].$date[5]");
# logfile input
my $input = shift;
# tar
system("/usr/bin/tar -cvf $input.tar $input");
# gzip
system("/usr/bin/gzip $input.tar");
# Datum anhaengen
my $output = ("$input.$dateformat.tgz");
system("mv $input.tar.gz '$output'");
# Wenn tgz vorhanden, original loeschen, aber auch nur dann...
if (-e "$input.$dateformat.tgz") {
print("\nLogfile packed, deleting orgin\n");
unlink $input or die "Error: Cant delete orgin file $input";
} else { print "ERROR, .tgz NOT created, stopping..." and die "1"; }
}
# Funktion ausfuehren
tarzip($inputfile);
wow, so viel kommentiert hab ich noch nie! ;)
packen usw. ist klar, nur die funktion mit dem datestring werd ich unter ksh bestimmt nicht mal eben so hinbekommen, hat dazu jemand nen einzeiler?
und wie prüfe ich unter ksh ob eine datei existiert? bei perl ists ja -e "file"
vielen dank im vorraus :)
-Florian
Ich halte perlscripts für die besseren shellscripts und habe auch einfach keine ahnung davon, weil ichs wie gesagt, für sinnlos halte, man schraenkt sich ja nur ein damit...
genug von meiner persönlichen meinung, anforderung ist anforderung und so wirds halt gemacht...
kann mir jemand nen kleinen stoß in die richtige richtung geben? hier ist erstmal mein script damit ihr wisst wovon ich sprech:
#!/usr/bin/perl
#
# Logfile rotation Script
#
# Usage: logroll.pl <logfile>
#
# Author: F.L.
# Version: 1.0 Date: 03.07.2007
#
######################################
use strict; # Keine globalen Variablen zulassen
use warnings; # Warnungen ausgeben
my $inputfile = $ARGV[0]; # Parameter einlesen und der Variable zuweisen
sub tarzip {
# unix-date zu human readable konvertieren
my $datestring = scalar(localtime);
# aufsplitten des strings in einzelne variablen
my @date = split(/ /, $datestring);
# unseren date-string formatieren
my $dateformat = ("$date[1].$date[5]");
# logfile input
my $input = shift;
# tar
system("/usr/bin/tar -cvf $input.tar $input");
# gzip
system("/usr/bin/gzip $input.tar");
# Datum anhaengen
my $output = ("$input.$dateformat.tgz");
system("mv $input.tar.gz '$output'");
# Wenn tgz vorhanden, original loeschen, aber auch nur dann...
if (-e "$input.$dateformat.tgz") {
print("\nLogfile packed, deleting orgin\n");
unlink $input or die "Error: Cant delete orgin file $input";
} else { print "ERROR, .tgz NOT created, stopping..." and die "1"; }
}
# Funktion ausfuehren
tarzip($inputfile);
wow, so viel kommentiert hab ich noch nie! ;)
packen usw. ist klar, nur die funktion mit dem datestring werd ich unter ksh bestimmt nicht mal eben so hinbekommen, hat dazu jemand nen einzeiler?
und wie prüfe ich unter ksh ob eine datei existiert? bei perl ists ja -e "file"
vielen dank im vorraus :)
-Florian