Schrift
[thread]7258[/thread]

Aktuelle Datei aus einem Ordner filter: filtert nicht aktuelle Datei vorhanden



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
leissi
 2005-09-07 10:32
#57706 #57706
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

folgendes Script läuft soweit nur checkt ernicht richtig ob aktuelle Dateien heisst das er checken soll ob aktuelle dateien vorhanden sind sprich tagesgültig und ein Tag zurück!

Kann mir einer helfen???

Script:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#************************************************************************************
#* Backup-Kontrolle TestDirector
#************************************************************************************
# noch offen
# Logfilname soll Timestamp enthalten
# ***********************************************************************************


# ####################################################
# ****
# H A U P T S T E U E R U N G ****
# ****
# ####################################################


# ####################################################
# Erzeugen der Log-Datei mit Zeitstempel
######################################################

my $ausgabe_Datei = "log3.txt";
open LogDatei, ">>backupCheck.txt" || die "Kann Log Datei nicht anlegen : $!";
use time::localtime;
$tm = localtime;
print LogDatei " $tm \n\n\n";

# ####################################################
# parameter und funktion fuer das script einlesen
######################################################
$parameterFile = "input/Main.cfg";
open(IN, $parameterFile) || die "Paramterfile $parameterFile nicht gefunden!";
@par = <IN>;
close(IN);
eval( join("\n", @par) );

# ####################################################
#Ermittlung der aktuellen TestDirector-projekte
######################################################

#use cwd;
#use time::localtime;
#use strict;
#use strict;
#use warnings;
use Data::Dumper;
#wird erst später aus DOMS.mdb ermittelt, vorerst wird mit Hardcodierten Werten gearbeitet

$pjDomain[0] = "ZITA_PKM";
$pjName [0] = "Phoenix";

$pjDomain[1] = "ZITA_ATF";
$pjName [1] = "ZITA_522";

$pjDomain[2] = "ZITA_ATF";
$pjName [2] = "TLA";

$numberProjects = $#pjName;

for ($i = 0; $i <= $numberProjects; $i++){

$bkupDirectory = $backupPath . "\\" . $pjDomain[$i] . "_" . $pjName[$i] . "_db";

print LogDatei"Prüfe Existenz von " . $bkupDirectory . "\n";

if ( &existsFile($bkupDirectory) == 1 ) {
print LogDatei "Verzeichnis ist vorhanden!\n";
# nächste Prüfung: Inhalt innerhalb ...
# Prüfe mit der Subroutine 'existsActBackup', ob für das Verzeichnis eine Bkup-Datei existiert, die jünger als der Zeitraum.
# wenn 'ja' ist alles ok
# wenn 'nein', dann Eintrag in Log-Datei


$tmpValue = 0;

my $dir = $bkupDirectory;
opendir(DIR,$dir) or die "Kann das angegebene Verzeichnis nicht öffnen: $!\n";

my @verzeichnisse = grep{-f $dir.'/'.$_}readdir(DIR);
print LogDatei $_,"\n" for(@verzeichnisse);
#closedir DIR;

### Das ist die Routine die prüfen soll ob Dateien aktuell mit Datum heute oder 1 Tag zurück sind!
sub existsActBackup {
if (-C $_ <= @_[1])
{
$tmpValue = 1;

} else {
$tmpValue = 0;
}
$rValue = $tmpValue
}

print LogDatei $_,"\n" for(@verzeichnisse);

} else {
print LogDatei "Verzeichnis ist nicht vorhanden!\n";
# LOG: Fehlermeldung ausweisen.
}



}




# ####################################################
# ****
# S U B R O U T I N E N ****
# ****
# ####################################################


# existsFile
# ----------------------------------------------------
# Diese Routine prüft, ob eine übergebene Datei, auch
# ein Verzeichnis existiert.
# wenn 'ja', dann gibt die Routine die Zahl 1 zurück
# wenn 'nein', dann die Zahl 0
# ----------------------------------------------------
sub existsFile {
$tmpValue = 0;

if (-e @_[0]){
$tmpValue = 1;
} else {
$tmpValue = 0;
}

$rValue = $tmpValue
}


edit renee: ne Runde [code]-Tags spendiert...\n\n

<!--EDIT|renee|1126075942-->
renee
 2005-09-07 11:04
#57707 #57707
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Element eines Arrays spricht man mit $array[index] und *nicht* mit @array[index] an...

Die Sub könnte ungefähr so aussehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub existsActBackup {
my ($file,$max_age) = @_;
my $tmpValue = 0;
my $age = (time - (stat($file))[10]) / (60 * 60 * 24);
if ($age < $max_age) {
$tmpValue = 1;
} else {
$tmpValue = 0;
}
return $tmpValue;
}


Die Subroutine wird dann ungefähr so benutzt:
Code: (dl )
1
2
3
if(existsActBackup('/path/to/fil.txt',hoechstAlterInTagen)){
print "Datei ist aktuell";
}


Du solltest auch unbedingt Wiki:use strict; benutzen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
vayu
 2005-09-07 14:34
#57708 #57708
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Übrigens könnten Satzzeichen in dem erklärenden Text auch helfen, dass wir verstehen, was dein problem ist. :)
leissi
 2005-09-07 14:42
#57709 #57709
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo Renee,

vielen Dank erstmal!

Könntest Du mir bitte noch erklären worin hier der Unterschied ist zu meinem ich wollt mit -C die aktuellen Dateien herausfiltern. Ich find nun nicht die Variable die bei Dir dies bewirkt!

Leissi
renee
 2005-09-07 14:57
#57710 #57710
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich mache das mit stat (siehe perldoc -f stat), was Du mit -C (vgl. perldoc -f -X) machst. Gefällt mir einfach besser...

Der große Unterschied besteht aber in dem, was Du -C bzw. ich stat als Argument übergibst. Bei Dir ist $_ sicherlich leer... Und was Du in @_[1] (was sicherlich ein $_[1][ sein sollte) hast, hast Du auch nirgends beschrieben!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2005-09-07 16:30
#57711 #57711
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo Vayu,

sorry ist mir in der Hektik nicht so aufgefallen!

Also nochmal :

In dem Script vergleiche ich zuerst ob die Dateiverzeichnisse vorhanden sind. Dannach gehe ich jedes Dateiverzeichnis durch und prüfe ob aktuell Backupdateien enthalten sind, diese dürfen nicht Älter als 1 Tag zurück sein . Wenn ja dann ist alles ok. Wenn Nein dann ist die Kontrolle Fehlerhaft.
Und mein Problem ist das ich kein OK oder Falsch Ergebnis bekommen.

Hoffe es ist jetzt verständlicher!

Gruss

Leissi
renee
 2005-09-07 16:59
#57712 #57712
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub existsActBackup {
if (-C $_ <= @_[1])
{
$tmpValue = 1;

} else {
$tmpValue = 0;
}
$rValue = $tmpValue
}


Hier ist $_ leer, also kann auch -C $_ kein Ergebnis liefern. Und was soll @_[1] sein?

Du hast nirgends gezeigt, wie Du die Methode aufgerufen hast...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2005-09-07 18:21
#57713 #57713
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo Rene,

mmmh hast Recht ist mir garnicht aufgefallen ich muss ja vorher die Methode aufrufen! wie vorher bei dem Verzeichnis !

Aber wo bau ich jetzt die Methode zum Aufruf ein!

Blöde Frage aber ich bin noch Anfänger in Perl!

Gruss

Leissi
renee
 2005-09-07 21:48
#57714 #57714
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du baust den Methodenaufruf irgendwo in den Block von if(existsBackup(...)){ ein (wo auch schon Dein Kommentar steht)...

ungefähr so:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/perl

use strict;
use warnings;
use time::localtime;
use Data::Dumper;

my $ausgabe_Datei = "log3.txt";
open(LogDatei, ">>backupCheck.txt") or die "Kann Log Datei nicht anlegen : $!";

my $tm = localtime;
print LogDatei " $tm \n\n\n";

my $parameterFile = "input/Main.cfg";
open(IN, $parameterFile) || die "Paramterfile $parameterFile nicht gefunden!";
my @par = <IN>;
close(IN);

eval( join("\n", @par) );


#wird erst später aus DOMS.mdb ermittelt, vorerst wird mit Hardcodierten Werten gearbeitet

my (@pjDomain,@pjName);

$pjDomain[0] = "ZITA_PKM";
$pjName [0] = "Phoenix";

$pjDomain[1] = "ZITA_ATF";
$pjName [1] = "ZITA_522";

$pjDomain[2] = "ZITA_ATF";
$pjName [2] = "TLA";

my $numberProjects = $#pjName;
my $backupPath = '';

for (my $i = 0; $i <= $numberProjects; $i++){

my $bkupDirectory = $backupPath . "\\" . $pjDomain[$i] . "_" . $pjName[$i] . "_db";

print LogDatei"Prüfe Existenz von " . $bkupDirectory . "\n";

if ( -e $bkupDirectory ) {
print LogDatei "Verzeichnis ist vorhanden!\n";
opendir(DIR,$bkupDirectory) or die "Kann $bkupDirectory nicht öffnen: $!\n";

my @verzeichnisse = grep{-f $bkupDirectory.'/'.$_}readdir(DIR);
my $bool = 0;
for my $file(@verzeichnisse){
$bool = 1 if(existsActBackup($file,1));
}
print LogDatei "Backup vorhanden\n" if($bool);
print LogDatei $_,"\n" for(@verzeichnisse);
closedir DIR;
} else {
print LogDatei "Verzeichnis ist nicht vorhanden!\n";
# LOG: Fehlermeldung ausweisen.
}
}

sub existsActBackup {
my ($file,$max_age) = @_;
my $tmpValue = 0;
my $age = (time - (stat($file))[10]) / (60 * 60 * 24);
if ($age < $max_age) {
$tmpValue = 1;
} else {
$tmpValue = 0;
}
return $tmpValue;
}


ungetestet!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
leissi
 2005-09-08 11:09
#57715 #57715
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Sorry\n\n

<!--EDIT|leissi|1126163537-->
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-09-07 10:32.