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
#!/usr/bin/perl
#Einbinden nötiger Module
use strict;
use warnings;
use English;
use Getopt::Long;
use File::stat;
use vars qw($PROGNAME);
use lib "/usr/lib64/nagios/plugins";
my $pfad = shift ;
local *DIR;
my @dateien = ();
my $pfadtotal = '';
my $groesse = 0;
my ($opt_c, $opt_f, $opt_w, $opt_C, $opt_W, $opt_h, $opt_V);
my ($result, $message, $age, $size, $st);
# Verzeichnis lesen
opendir(DIR, $pfad);
@dateien = readdir(DIR);
closedir(DIR);
# Addition oder Rekursion fuer alle gelesenen
foreach my $datei (@dateien) {
next if ($datei eq '.' || $datei eq '..');
print "DATEI: $pfad\n";
$pfadtotal = "$pfad/$datei";
$opt_w = 240000000;
$opt_c = 6000000000;
$opt_W = 0;
$opt_C = 0;
$opt_f = "";
if(-d $pfadtotal) {
$st = File::stat::stat($pfadtotal);
$age = time - $st->mtime;
$size = $st->size;
$result = 'OK';
#if (($opt_c and $age > $opt_c)) {
$result = 'CRITICAL';
#}
#elsif (($opt_w and $age > $opt_w)) {
$result = 'WARNING';
#}
print "FILE_AGE $result: $pfadtotal is $age seconds old \n";
print "VERZEICHNIS: $pfadtotal\n";
} else {
print "NNNEEEEIIINNN"
}
}
1
2
3
4
my $pfad = shift; # oder $pfad = $ARGV[0];
die('Fehler: kein Verzeichnis angegeben!') unless defined $pfad;
die("Das Verzeichnis [$pfad] existiert nicht") unless -e $pfad;
die("[$pfad] ist kein Verzeichnis") unless -d $pfad;
1
2
3
4
5
6
7
8
9
10
11
12
stat tests
The following stat based methods are provided:
dev, ino, mode, nlink, uid, gid, rdev, size, atime, mtime,
ctime, blksize, and blocks. See "stat" in perlfunc for details.
Each of these can take a number of targets, which will follow Number::Compare semantics.
$rule->size( 7 ); # exactly 7
$rule->size( ">7Ki" ); # larger than 7 * 1024 * 1024 bytes
$rule->size( ">=7" )
->size( "<=90" ); # between 7 and 90, inclusive
$rule->size( 7, 9, 42 ); # 7, 9 or 42
1
2
use File::Find::Rule::Age;
my @old_files = find( file => age => [ older => '1M' ], in => '.' );
1
2
# find all the subdirectories of a given directory
my @subdirs = File::Find::Rule->directory->in( $directory );
Guest Jensdanke euch, ich finde das andere auch praktischer, so was ich von meiner leihen meinung her sagen kann, nur muss ich jetzt erstmal das Objekt , die Klasse oder wie das hier in der Sprache genannt wird nach installieren :)
INSTALLATION ^
perl Makefile.PL
make test
and if all goes well
make install
bringt mich gerade nicht weiter _._
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Can't stat age: No such file or directory
at ./verz.pl line 48
Can't stat ARRAY(0xd4c8b00): No such file or directory
at ./verz.pl line 48
Can't stat in: No such file or directory
at ./verz.pl line 48
Can't stat $dir: No such file or directory
at ./verz.pl line 48
Can't stat age: No such file or directory
at ./verz.pl line 48
Can't stat ARRAY(0xd4c9130): No such file or directory
at ./verz.pl line 48
Can't stat in: No such file or directory
at ./verz.pl line 48
Can't stat $dir: No such file or directory
at ./verz.pl line 48
Can't stat age: No such file or directory
at ./verz.pl line 48
Can't stat ARRAY(0xd4c8ac0): No such file or directory
at ./verz.pl line 48
Can't stat in: No such file or directory
at ./verz.pl line 48
Can't stat $dir: No such file or directory
at ./verz.pl line 48
1
2
3
4
5
6
7
8
9
10
11
12
if ($opt_r) {
# find all the subdirectories of a given directory
my @subdirs = File::Find::Rule->directory->in( '.' );
# Datei alter auslesen.i
my @dateien = find( file => age => [ older => '1M' ], in => '$pfad' );
foreach my $dir (@subdirs){
$dir =" $pfad$dir";
my @dateien = find( file => age => [ older => '1M' ], in => '$dir' );
}}
Can't use string ("file") as a subroutine ref while "strict refs" in use at /usr/lib/perl5/5.8.8/File/Find.pm line 822.
1
2
3
4
5
6
7
8
9
10
use File::Find::Rule::Age;
use File::Find::Rule;
use File::Find;
use strict;
use warnings;
use English;
use Getopt::Long;
use File::stat;
use vars qw($PROGNAME);
use lib "/usr/lib64/nagios/plugins";
2011-06-06T07:10:45 JEns
2011-06-06T06:41:12 JEns
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
#Einbinden nötiger Module
use File::Find::Rule::Age;
use strict;
use warnings;
use English;
use Getopt::Long;
use File::stat;
use vars qw($PROGNAME);
use lib "/usr/lib64/nagios/plugins";
my $pfad;
#local *DIR;
my @dateien = ();
my $pfadtotal = '';
my ($opt_c, $opt_f, $opt_w, $opt_p, $opt_n, $opt_r);
my @subdirs = ();
Getopt::Long::Configure('bundling');
GetOptions(
"p" => \$pfad, "pfad" => \$pfad,
"n" => \$opt_n, "Normal" => \$opt_n,
"r" => \$opt_r, "rekursive" => \$opt_r,
"w=f" => \$opt_w, "warning-age=f" => \$opt_w,
"c=f" => \$opt_c, "critical-age=f" => \$opt_c);
if ($pfad) {
$pfad = shift ;
}
#Verzeichnis lesen
#Rekursive
if ($opt_r) {
# find all the subdirectories of a given directory
my @subdirs = File::Find::Rule->directory->in( $pfad );
# Datei alter auslesen.i
foreach my $dir (@subdirs){
my @dateien = find( file => age => [ older => '1m' ], in => $dir );
}
}
#Normal
if ($opt_n) {
my @dateien = find( file => age => [ older => '1m' ], in => $pfad );
}
# Addition oder Rekursion fuer alle gelesenen
foreach my $datei (@dateien) {
print "FILE_AGE Critical: $datei is older than 1 Month \n";
}
1 2 3 4
if ($foo) { my @dateien = (1,2,3); } print @dateien; # @dateien ist leer!
1 2 3 4 5
my @dateien; # deklaration if ($foo) { @dateien = (1,2,3); } print @dateien; # @dateien ist gefüllt
1 2 3
foreach my $dir (@subdirs){ push(@dateien, find( file => age => [ older => '1m' ], in => $dir ) ); }
2011-06-06T10:03:55 JEnsbin verwirrt und ich will wieder zu meinem Java, ist viel toller ^^ aber bei weitem nicht so praktisch ....
QuoteUnd ich finde Perl Toller und Java verwirrt mich, weil es so unnötig kompliziert ist. ;-)
2011-06-06T11:29:44 JEnsIn der Sonnensprache würde ich das mit += machen, in der Not, aber push ist auch toll
2011-06-06T11:29:44 JEnsIn der Sonnensprache würde ich das mit += machen
2011-06-06T11:29:44 JEnsDu hast dich übrigens versprochenQuoteUnd ich finde Perl Toller und Java verwirrt mich, weil es so unnötig kompliziert ist. ;-)
"weil es so un_kompliziert ist" :D
1 2 3 4 5 6 7 8
import java.net.*; URL url = new URL("http://www.example.org"); InputStream is = url.openStream(); byte[] buff = new byte[4096]; StringBuffer sb=new StringBuffer(); while( -1 != is.read( buff ) ) sb.append(buff); String site = sb.toString;
1 2 3 4
my $ref={ test1 => [1, 2, 3, [5, 5.1, 5.2, 5.3, 5.4], 6], test2 => {test2_0 => {test2_0_0=>'leer'}, test2_1=>'leer'}, };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
HashMap<String,Object> ref = new HashMap<String,Object>(); ArrayList<Object> l1 = new ArrayList<Object>(); l1.add( new Float(1) ); l1.add( new Float(2) ); l1.add( new Float(3) ); ArrayList<Object> l2 = new ArrayList<Object>(); l2.add( new Float(5) ); l2.add( new Float(5.1) ); l2.add( new Float(5.2) ); l2.add( new Float(5.3) ); l2.add( new Float(5.4) ); l1.add(l2); l1.add( new Float(6) ); ref.put("test1", l1); HashMap<String,Object> l3 = new HashMap<String,Object>(); HashMap<String,Object> l4 = new HashMap<String,Object>(); l4.put("test2_0_0", "leer"); l3.put("test2_0", l3); l3.put("test2_1", "leer");