Thread Auslesen von einer Datei - Perl (26 answers)
Opened by JEns at 2011-07-19 10:25

JEns
 2011-07-19 14:00
#150562 #150562
User since
2011-06-06
19 Artikel
BenutzerIn
[default_avatar]
ACHSO ... meine status.dat fängt an mit
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
########################################
# NAGIOS STATUS FILE
#
# THIS FILE IS AUTOMATICALLY GENERATED
# BY NAGIOS. DO NOT MODIFY THIS FILE!
########################################

info {
created=1311076602
version=3.2.3
last_update_check=0
update_available=0
last_version=
new_version=
}

programstatus {
modified_host_attributes=0
modified_service_attributes=0
nagios_pid=5142
daemon_mode=1
program_start=1310972438
last_command_check=1311076545
last_log_rotation=1311026402
enable_notifications=1
active_service_checks_enabled=1
passive_service_checks_enabled=1
active_host_checks_enabled=1
passive_host_checks_enabled=1
enable_event_handlers=1
}

Kann es daran liegen ???


Richtig, :"..."/n ist der Hostname

Das prinzip von gierig und nicht gierig versteh ich soweit.

Ja, es gibt Hostname und downtime_depth nur einmal pro "block" ...


--- Ich kriege bei meienr Status.dat keine Ausgabe, ich blick es nicht.


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
#!/usr/bin/perl

use strict;
use warnings;

my %status;
my $file = './status.dat';
{
local $/ = "hoststatus {\n";
if ( open my $fh, '<', $file ) {
while ( my $block = <$fh> ) {
my ($hostname,$status) = $block =~ m!
host_name:([^\n]+)
.*
scheduled_downtime_depth=(\d+)
!xms;
next if !( $hostname && $status );
$status{$hostname} = $status;
print $status;
}
}
else {
print "Fehler beim Einlesen von $file: $!\n";
}
}

for my $host ( keys %status ) {
print $host,"\n" if $status{$host} == 1;
}



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
hoststatus {
host_name=P20002
modified_attributes=0
check_command=check_ping!100.0,20%!500.0,40%
check_period=24x7
notification_period=24x7
check_interval=15.000000
retry_interval=1.000000
event_handler=
has_been_checked=1
should_be_scheduled=1
check_execution_time=4.120
check_latency=179.616
check_type=0
current_state=0
last_hard_state=0
last_event_id=0
current_event_id=0
current_problem_id=0
last_problem_id=0
plugin_output=PING OK - Packet loss = 0%, RTA = 1.58 ms
long_plugin_output=
performance_data=rta=1.583000ms;100.000000;500.000000;0.000000 pl=0%;20;40;0
last_check=1311076259
next_check=1311077181
check_options=0
current_attempt=1
max_attempts=1
state_type=1
last_state_change=1310471633
last_hard_state_change=1310471633
last_time_up=1311076281
last_time_down=0
last_time_unreachable=0
last_notification=0
next_notification=0
no_more_notifications=0
current_notification_number=0
current_notification_id=0
notifications_enabled=1
problem_has_been_acknowledged=0
acknowledgement_type=0
active_checks_enabled=1
passive_checks_enabled=1
event_handler_enabled=1
flap_detection_enabled=1
failure_prediction_enabled=1
process_performance_data=1
obsess_over_host=1
last_update=1311076602
is_flapping=0
percent_state_change=0.00
scheduled_downtime_depth=0
}



dieser Block aus der Status.dat wiederholt sich XXX mal ...


Irgendwo ist ein Problem mit dem Einlesen der Datei, ich denke mal das ich ein Fehler mit dem hoststatus {\n habe, kriege es gerade nicht ausgemerzt ...
Last edited: 2011-07-19 14:04:06 +0200 (CEST)

View full thread Auslesen von einer Datei - Perl