Leser: 1
|< 1 2 >| | 12 Einträge, 2 Seiten |
Quoteroot pts/0 pts/0 7 544768 0000 0000 1181308626 xadmp01.bla-ag.de Fri Jun 8 15:17:06 MSZ 2007
pts/0 pts/0 8 544768 0000 0000 1181308692 Fri Jun 8 15:18:12 MSZ 2007
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
#!/usr/bin/perl
use strict;
use warnings;
my $maxage = '4'; # Maximales alter der Eintraege in Wochen
sub bin2ascii {
system("/usr/lib/acct/fwtmp < ./wtmp_testfile > /tmp/wtmp.ascii");
}
sub ascii2bin {
system("/usr/lib/acct/fwtmp -ci < /tmp/wtmp.ascii > ./wtmp_testfile");
}
sub mapmonth {
my %mnr=('Jan', 1, 'Feb', 2, 'Mar', 3, 'Apr', 4, 'Mai', 5, 'Jun', 6, 'Jul', 7, 'Aug', 8, 'Sep', 9, 'Oct', 10, 'Nov', 11, 'Dec', 12);
my $monat=$mnr{$_[0]};
return($monat);
}
sub ripdates {
my $date = `date`;
my @date_now = split(/ /,$date);
my $currentmonth = $date_now[1];
my $mappedmonth = mapmonth($currentmonth);
# print $mappedmonth; # Test ob die funktion mapmonth funzt
open(WTMP_ASCII,"/tmp/wtmp.ascii");
chomp(my @wtmp = <WTMP_ASCII>);
close(WTMP_ASCII);
foreach (@wtmp) {
my @wtmplines =~ ######## ?????? #######
print "$_\n";
}
}
print("Loesche wtmp Eintraege der letzten 4 Wochen...\n");
bin2ascii();
ripdates();
#ascii2bin();
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; my $re = qr/((?:\w{3}\s+){2}\d+\s+(?:\d+:){2}\d\d\s+[A-Z]{3}\s+\d{4})$/; if( 'irgendwas anderes, ein ganz langer Text Fri Jun 8 15:18:12 MSZ 2007' =~ $re ){ print $1,"\n"; }
Quote
Ich hab leider niemand im bekanntenkreis der sich mit perl ausseinandersetzt, darum ist das lernen relativ einseitig und bei jedem blöden problem wo ich häng muss ich irgendwelche perlboards zu rate ziehn. (Wobei dieses hier in meiner wertung ganz oben steht, bei den anderen gabs meist garkeine oder nur unzulängliche antworten)
QuoteAnsonsten... Mach ich heut nich mehr alzuviel, irgendwie hab ich nurnoch weisses rauschen im hirn und weiss nich wie ich die einzelnen zeilen durchgeh, den regex anwende und das datum extrahiere, dann überprüfe ob das "ge-reg-exte" (sic) zu alt ist, und dann wieder ins file schreib...
aber das macht heut auch nix mehr, is bald feierabend ^^
Schönen Tag noch!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/perl use strict; use warnings; # die Datei, die durchsucht werden soll my $file = 'file.txt'; # oeffne die Datei # < ist lesend, > ist schreibend, >> ist anhaengend # 'or die $!' gibt eine Fehlermeldung aus wenn die Datei nicht # geoeffnet werden kann (fehlende Rechte, Datei nicht da, etc) open my $fh, '<', $file or die $!; # so lange Zeilen ausgelesen werden while( my $line = <$fh> ){ # gib Zeilennummer und Zeile aus print $. . $line; } # schliesse Datei close $fh;
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
#!/usr/bin/perl
#
# AIX wtmp Cleaner
#
###################
use strict;
use warnings;
my $tmpfile = '/tmp/wtmp.ascii';
my $regex = qr/((?:\w{3}\s+){2}\d+\s+(?:\d+:){2}\d\d\s+[A-Z]{3}\s+\d{4})$/;
my $date = `date`;
my @cdate = split(/ /, $date);
my $cmonth = mapmonth($cdate[1]);
sub bin2ascii {
system("/usr/lib/acct/fwtmp < ./wtmp_testfile > /tmp/wtmp.ascii");
}
sub ascii2bin {
system("/usr/lib/acct/fwtmp -ci < /tmp/wtmp.ascii > ./wtmp_testfile");
}
sub mapmonth {
my %mnr=('Jan', 1, 'Feb', 2, 'Mar', 3, 'Apr', 4, 'Mai', 5, 'Jun', 6, 'Jul', 7, 'Aug', 8, 'Sep', 9, 'Oct', 10, 'Nov', 11, 'Dec', 12);
my $monat=$mnr{$_[0]};
return($monat);
}
sub ripdates {
my $date = `date`;
my @date_now = split(/ /,$date);
my $currentmonth = $date_now[1];
my $mappedmonth = mapmonth($currentmonth);
open my $fh, '<', $tmpfile or die $!;
unlink "wtmpfile.new";
while(my $line = <$fh>) {
foreach ($line) {
my @regexped = ($line =~ $regex);
my @datestring = split(/ /,$regexped[0]);
my $daynr = $datestring[0];
my $monthnr = mapmonth($datestring[1]);
if ($monthnr eq $cmonth) {
open(NEWWTMP,">>wtmpfile.new");
print NEWWTMP $_;
print ("Month: $cmonth -> $line\n");
}
}
}
close $fh;
close (NEWWTMP);
}
print("Loesche wtmp Eintraege der letzten 4 Wochen...\n");
bin2ascii();
ripdates();
#ascii2bin();
#unlink $tmpfile;
#unlink wtmpfile.new;
1
2
3
4
5
6
7
8
9
10
11
12
13
my $date = `date`;
my @cdate = split(/ /, $date);
my $cmonth = mapmonth($cdate[1]);
my $delstart = ($cmonth - 2);
my $delstop = ($cmonth + 1);
my @range = ($delstop .. $delstart);
[...]
if ($monthnr != @range) {
open(NEWWTMP,">>$newwtmp");
print NEWWTMP $_;
}
1
2
3
4
my $okaymonth1 = ($cmonth - 2);
my $okaymonth2 = ($cmonth - 1);
if (($monthnr eq $cmonth) or ($monthnr eq $okaymonth1) or ($monthnr eq $okaymonth2))
1
2
3
4
5
6
if ($okaymonth1 == '-1') {
$okaymonth1 = '12';
}
if ($okaymonth2 == '-2') {
$okaymonth2 = '11';
}
1 2 3 4
if ( !grep{ $_ == $monthnr }@range ) { open(NEWWTMP,">>$newwtmp"); print NEWWTMP $_; }
1 2 3 4 5 6 7 8 9 10 11 12 13
my @range; if( $cmonth > 2 ){ @range = ($cmonth-2 .. $cmonth); } else{ my $start = 10 + $cmonth; my $mid = $start == 11 ? 12 : 1; @range = ($start,$mid,$cmonth); } if( grep{ $_ == $monthnr }@range ){ print "..."; }
|< 1 2 >| | 12 Einträge, 2 Seiten |