![]() |
|< 1 2 3 4 >| | ![]() |
37 entries, 4 pages |
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
50: my @diff = <TMP>;
51:
52: sub calcdiff {
53: my $old = shift;
54: my $new = shift;
55: if ($new > $old) {
56: my $ergebniss_1 = ($new - $old);
57: return($ergebniss_1);
58: }
59: elsif ($old > $new) {
60: my $ergebniss_2 = ($old - $new);
61: return ($ergebniss_2);
62: }
63: }
64:
65: my @order;
66: while( my $line = @diff ){
67: if ( $line =~ m/^(.+):\s+\/.+:$/) {
68: push @order, [$1."\n"];
69: }
70: elsif ( $line =~ m/(^\d+)\s+(.+)\s+(.)\s+(\d+)\s+(.+)\s+$/ ) {
71: if ($3 eq "\|") {
72: push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . &calcdiff("$1","$4") . "\n";
73: }
74: elsif ($3 eq "\<") {
75: push @{ $order[-1] }, "\tNew File:\t$5\tSize: $4\n";
76: }
77: elsif ($3 eq "\>") {
78: push @{ $order[-1] },"\tFile deleted:\t$5\n";
79: }
80: }
81: }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
my @order; while( my $line = <TMP> ){ if ( $line =~ m/^(.+):\s+\/.+:$/) { push @order, [$1."\n"]; } elsif ( $line =~ m/(^\d+)\s+(.+)\s+(.)\s+(\d+)\s+(.+)\s+$/ ) { if ($3 eq "\|") { push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . abs($1 - $4) . "\n"; } elsif ($3 eq "\<") { push @{ $order[-1] }, "\tNew File:\t$5\tSize: $4\n"; } elsif ($3 eq "\>") { push @{ $order[-1] },"\tFile deleted:\t$5\n"; } } }
FlorianL+2008-01-21 14:12:50--Code (perl): (dl )chomp(my $prechk = `echo $preday |wc -ck`);
betterworld+2008-01-23 22:29:29--
[...] Um mit Datumsangaben zu rechnen:Date::Calc [...]
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
#!/usr/bin/perl use strict; use Data::Dumper; my $filespath = "/home/re17830/chksize/checksize_db/"; if (defined $ARGV[0]) {} else { print("Error: No argument\n\nUsage: checksize <path> <day>\n"); exit 0; } chomp(my $mountpt = $ARGV[0]); chomp(my $day = $ARGV[1]); chomp(my $month = `date +%m`); chomp(my $premonth = ($month -1)); if ($month == 01) { $premonth = 12; } chomp(my $year = `date +%y`); chomp(my $preyear = ($year - 1)); my $file = "$filespath\SizeCheck-$year\-$month\-$day\.dat"; my $monthfile = "$filespath\SizeCheck-$year\-$premonth\-$day\.dat"; my $yearfile = "$filespath\SizeCheck-$preyear\-$premonth\-$day\.dat"; if (-T "$file") {} else { $file = "$monthfile"; } my @fslist = `ls -Rlgo $mountpt`; my $tmpfile = "/tmp/SizeCheck.tmp"; open(REWRITE, ">$tmpfile"); print REWRITE "$mountpt\:\n"; foreach(@fslist) { chomp(); my @line = split(/ +/); if ($line[0] =~ m/^\//g) { print REWRITE "\n$line[0]\n"; } elsif (($line[0] =~ m/^dr/g) || ($line[0] =~ m/^-r/g)) { print REWRITE "$line[2]\t\t$line[6]\n"; } } my @diff = `sdiff $file $tmpfile \|egrep \[\:\\\<\\\>\\\|\]`; my @order; while( my $line = @diff ){ if ( $line =~ m/^(.+):\s+\/.+:$/) { push @order, [$1."\n"]; } elsif ( $line =~ m/(^\d+)\s+(.+)\s+(.)\s+(\d+)\s+(.+)\s+$/ ) { if ($3 eq "\|") { push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . abs($1 - $4) . "\n"; } elsif ($3 eq "\<") { push @{ $order[-1] }, "\tNew File:\t$5\tSize: $4\n"; } elsif ($3 eq "\>") { push @{ $order[-1] },"\tFile deleted:\t$5\n"; } } } for( @order ){ next if @$_ == 1; print $_ for @$_; }
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
#Lokation der CheckSize Files
FILESPATH="/home/re17830/chksize/checksize_db/"
if [ ! -d "$FILESPATH" ] ; then
mkdir $FILESPATH
fi
# Commandline Options definieren
if [[ $# -eq 0 ]];then
print "No Arguments given!\n\nUsage: ckecksize <path> <day>"
exit
fi
MOUNTPT=$1
DAY=$2
# Datum definieren
MONTH=`date +%m`
PREMONTH=$(($MONTH -1))
if [ $MONTH -eq 01 ] ; then
PREMONTH=12
fi
YEAR=`date +%y`
PREYEAR=$(($YEAR -1))
# Dateinamen deklarieren
FILE=$FILESPATH\SizeCheck-$YEAR-$MONTH-$DAY.dat
# Bei einer abfrage auf einen Tag wird im Fall das im Aktuellen Monat nichts gefunden wird,
# mit dem Tag des vor-Monats verglichen. (Umgeht das Problem beim Monatswechsel)
if [ ! -f "$FILE" ] ; then
FILE=$FILESPATH\SizeCheck-$YEAR-$PREMONTH-$DAY.dat
if [ ! -f "$FILESPATH\SizeCheck-$YEAR-$PREMONTH-$DAY.dat" ] ; then
if [ ! -f "$FILESPATH\SizeCheck-$PREYEAR-$PREMONTH-$DAY.dat" ] ; then
echo "No Status file found for day $DAY\n"
exit
fi
fi
fi
# Temp-Files anlegen und deklarieren zum re-generieren der Files
cat $FILE |grep -p "^$MOUNTPT" > /tmp/sizecheck.tmp
TMPFILE="/tmp/sizecheck2.tmp"
ls -Rlgo $MOUNTPT > $TMPFILE
# Dieser Perl-Einzeiler gleicht den Output des Temp-Files an den des Status-Files an.
perl -e 'open(FILE, "<'$TMPFILE'"); my @fslist = <FILE>; close(FILE); open(REWRITE, ">'$TMPFILE'"); print REWRITE "'$MOUNTPT':\n"; foreach(@fslist) { cho
mp(); @line = split(/ +/); if ($line[0] =~ m/^\//g) { print REWRITE "\n$line[0]\n"; } elsif (($line[0] =~ m/^dr/g) || ($line[0] =~ m/^-r/g)) { print REWR
ITE "$line[2]\t\t$line[6]\n" } }'
# Der veränderte Output wird in ein Temp-File geschrieben
TMPFILE2=/tmp/sizecheck3.tmp
cat $FILE |grep -p "^$MOUNTPT" > $TMPFILE2
# Vergleich der Files
sdiff $TMPFILE $TMPFILE2 |egrep [:\<\>\|] > /tmp/sizecheck4.tmp
perl -e '
use strict;
sub calcdiff {
my $old = shift;
my $new = shift;
if ($new > $old) {
my $ergebniss_1 = ($new - $old);
return($ergebniss_1);
}
elsif ($old > $new) {
my $ergebniss_2 = ($old - $new);
return ($ergebniss_2);
}
}
my @order;
open(INFILE, "/tmp/sizecheck4.tmp");
while( my $line = <INFILE> ){
if ( $line =~ m/^(.+):\s+\/.+:$/) {
push @order, [$1."\n"];
}
elsif ( $line =~ m/(^\d+)\s+(.+)\s+(.)\s+(\d+)\s+(.+)\s+$/ ) {
if ($3 eq "\|") {
push @{ $order[-1] },"\t$2\t$1\t$4\t" . "Diff: " . &calcdiff("$1","$4") . "\n";
}
elsif ($3 eq "\<") {
push @{ $order[-1] }, "\tNew File:\t$5\tSize: $4\n";
}
elsif ($3 eq "\>") {
push @{ $order[-1] },"\tFile deleted:\t$5\n";
}
}
}
for( @order ){
next if @$_ == 1;
print $_ for @$_;
}
# Aufräumen der Temporären Files
rm /tmp/sizecheck*
![]() |
|< 1 2 3 4 >| | ![]() |
37 entries, 4 pages |