title: How to parse nagios status.dat file?
body: <p>I'd like to parse status.dat file for nagios3 and output as xml with a python script.
  The xml part is the easy one but how do I go about parsing the file? Use multi line regex? 
  It's possible the file will be large as many hosts and services are monitored, will loading the whole file in memory be wise?<br>
  I only need to extract services that have critical state and host they belong to.</p>
  
  <p>Any help and pointing in the right direction will be highly appreciated.</p>
  
  <p><strong>LE</strong> Here's how the file looks:</p>
  
  <pre><code>########################################
  #          NAGIOS STATUS FILE
  #
  # THIS FILE IS AUTOMATICALLY GENERATED
  # BY NAGIOS.  DO NOT MODIFY THIS FILE!
  ########################################
  
  info {
      created=1233491098
      version=2.11
      }
  
  program {
      modified_host_attributes=0
      modified_service_attributes=0
      nagios_pid=15015
      daemon_mode=1
      program_start=1233490393
      last_command_check=0
      last_log_rotation=0
      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
      obsess_over_services=0
      obsess_over_hosts=0
      check_service_freshness=1
      check_host_freshness=0
      enable_flap_detection=0
      enable_failure_prediction=1
      process_performance_data=0
      global_host_event_handler=
      global_service_event_handler=
      total_external_command_buffer_slots=4096
      used_external_command_buffer_slots=0
      high_external_command_buffer_slots=0
      total_check_result_buffer_slots=4096
      used_check_result_buffer_slots=0
      high_check_result_buffer_slots=2
      }
  
  host {
      host_name=localhost
      modified_attributes=0
      check_command=check-host-alive
      event_handler=
      has_been_checked=1
      should_be_scheduled=0
      check_execution_time=0.019
      check_latency=0.000
      check_type=0
      current_state=0
      last_hard_state=0
      plugin_output=PING OK - Packet loss = 0%, RTA = 3.57 ms
      performance_data=
      last_check=1233490883
      next_check=0
      current_attempt=1
      max_attempts=10
      state_type=1
      last_state_change=1233489475
      last_hard_state_change=1233489475
      last_time_up=1233490883
      last_time_down=0
      last_time_unreachable=0
      last_notification=0
      next_notification=0
      no_more_notifications=0
      current_notification_number=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=1233491098
      is_flapping=0
      percent_state_change=0.00
      scheduled_downtime_depth=0
      }
  
  service {
      host_name=gateway
      service_description=PING
      modified_attributes=0
      check_command=check_ping!100.0,20%!500.0,60%
      event_handler=
      has_been_checked=1
      should_be_scheduled=1
      check_execution_time=4.017
      check_latency=0.210
      check_type=0
      current_state=0
      last_hard_state=0
      current_attempt=1
      max_attempts=4
      state_type=1
      last_state_change=1233489432
      last_hard_state_change=1233489432
      last_time_ok=1233491078
      last_time_warning=0
      last_time_unknown=0
      last_time_critical=0
      plugin_output=PING OK - Packet loss = 0%, RTA = 2.98 ms
      performance_data=
      last_check=1233491078
      next_check=1233491378
      current_notification_number=0
      last_notification=0
      next_notification=0
      no_more_notifications=0
      notifications_enabled=1
      active_checks_enabled=1
      passive_checks_enabled=1
      event_handler_enabled=1
      problem_has_been_acknowledged=0
      acknowledgement_type=0
      flap_detection_enabled=1
      failure_prediction_enabled=1
      process_performance_data=1
      obsess_over_service=1
      last_update=1233491098
      is_flapping=0
      percent_state_change=0.00
      scheduled_downtime_depth=0
      }
  </code></pre>
  
  <p>It can have any number of hosts and a host can have any number of services.</p>