Sponsored Content
Top Forums Shell Programming and Scripting Parsing Nagios service config files with awk Post 302482041 by ctsgnb on Monday 20th of December 2010 12:41:49 PM
Old 12-20-2010
Code:
awk '/^define service\{$/,/^}$/{if(/service_description/||(/(host_name|hostgroup_name)/)||/contact_groups/||/check_command/){for(i=2;i<=NF;i++)x=(x)?x" "$i:$i;printf "%s",(/host/)?x:"~"x;x=y}}END{print y}' tst
liv_citrix_group,lon_citrix_group,liv_exchange_group,lon_exchange_group~CPU Loading~t2-admins,t2-mgrs~ctx_cpu_snmp!comstring 75 85

Code:
# awk '/^define service\{$/,/^\}$/{if(/service_description/||(/(host_name|hostgroup_name)/)||/contact_groups/||/check_command/){s=(/host/)?y:"~";$1="";A[NR]=substr($0,2)s}}/^\}$/{for(i in A)printf "%s",A[i]}END{print y}' tst
CPU Loading~t2-admins,t2-mgrs~ctx_cpu_snmp!comstring 75 85~liv_citrix_group,lon_citrix_group,liv_exchange_group,lon_exchange_group
#

Code:
# awk '/service_description/ { $1="" ; A[1]=substr($0,2) }/(host_name|hostgroup_name)/ { $1="" ; A[2]=substr($0,2) }/contact_groups/ { $1="" ; A[3]=substr($0,2) }/check_command/ { $1="" ; A[4]=substr($0,2) }/^\}$/{ print A[1]"~"A[2]"~"A[3]"~"A[4] }' tst
CPU Loading~liv_citrix_group,lon_citrix_group,liv_exchange_group,lon_exchange_group~t2-admins,t2-mgrs~ctx_cpu_snmp!comstring 75 85
#

Add this before the last print :
Code:
/^\}$/


Last edited by ctsgnb; 12-20-2010 at 03:59 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parsing config file

Hi All, I have a requirement to parse a file. Let me clear you all on the req. I have a job which contains multiple tasks and each task will have multiple attributes that will be in the below format. Each task will have some sequence number according to that sequence number tasks shld... (0 Replies)
Discussion started by: rajeshorpu
0 Replies

2. Shell Programming and Scripting

parsing config file to create new config files

Hi, I want to use a config file as the base file and parse over the values of country and city parameters in the config file and generate separate config files as explained below. I will be using the config file as mentioned below: (config.txt) country:a,b city:1,2 type:b1... (1 Reply)
Discussion started by: clazzic
1 Replies

3. UNIX for Dummies Questions & Answers

Issue with parsing config variables

I am using MKS tool kit on windows server. One config variable is defined in windows environment and I am trying to use that variable. # Below RootDir is defined in windows RootDir="\\f01\var" # in unix script details="$RootDir/src|$RootDir/tgt" src=`echo $details|awk -F '|' '{print... (1 Reply)
Discussion started by: madhukalyan
1 Replies

4. Shell Programming and Scripting

Need help parsing config file in ksh

Hi all, I've done some searching here but haven't found exactly what I'm looking for so I thought I'd post up and see if someone can help out. I'm working on a shell script that I would like to store environment variables in an external file. I'm familiar with sourcing a file with variables in... (1 Reply)
Discussion started by: kungfusnwbrdr
1 Replies

5. Shell Programming and Scripting

Parsing config-file (perl)

Hi, i'm trying to parse a config file that have alot of rows similar to this one: Example value value value What i want to do is to split and save the row above in a hash, like this: Example = value value value Basically i want to split on the first whitespace after the first... (3 Replies)
Discussion started by: mikemikemike
3 Replies

6. Infrastructure Monitoring

Using SMF to register & start a (Nagios) service

I'm trying to register & start a service using SMF on Solaris 10. It's nsca, part of the Nagios monitoring system. I've got nsca running fine as a detached process, and can manually create passive checks via send_nsca. But when I try to run nsca as a daemon, I need some advice. The nsca... (0 Replies)
Discussion started by: lyle
0 Replies

7. Shell Programming and Scripting

Shell script that will compare two config files and produce 2 outputs 1)actual config file 2)report

Hi I am new to shell scripting. There is a requirement to write a shell script to meet follwing needs.Prompt reply shall be highly appreciated. script that will compare two config files and produce 2 outputs - actual config file and a report indicating changes made. OS :Susi linux ver 10.3. ... (4 Replies)
Discussion started by: muraliinfy04
4 Replies

8. Shell Programming and Scripting

parsing a config file using bash

Hi , I have a config _file that has 3 columns (Id Name Value ) with many rows . In my bash script i want to be able to parse the file and do a mapping of any Id value so if i have Id of say brand1 then i can use the name (server5X) and Value (CCCC) and so on ... Id Name ... (2 Replies)
Discussion started by: nano2
2 Replies

9. Red Hat

Nagios is sending "Service Alert: CentOS 5/HTTP is WARNING"

Hello All, I have setup Nagios 3.2.3 on CentOS release 5.7 (Final) with the default config files and added 1 host to it and it is sending "Service Alert: CentOS 5/HTTP is WARNING" frequently, how do you fix this one? what are the additional files that need to be added so that I can monitor the... (0 Replies)
Discussion started by: lovesaikrishna
0 Replies

10. AIX

NAGIOS Service not able to open port on AIX 7.1

I have an AIX 7.1 LPAR where Nagios agent was installed for monitoring. The issue is that when I start the nagios service (ncpa_listener), it starts but does not open the 5693 port it requires for communication. On all other LPARs the service opens the port and is listening. I tried reinstalling... (4 Replies)
Discussion started by: wibhore
4 Replies
Nagios::Object(3pm)					User Contributed Perl Documentation				       Nagios::Object(3pm)

NAME
Nagios::Object - Creates perl objects to represent Nagios objects DESCRIPTION
This module contains the code for creating perl objects to represent any of the Nagios objects. All of the perl classes are auto-generated at compile-time, so it's pretty trivial to add new attributes or even entire objects. The following is a list of currently supported classes: Nagios::TimePeriod Nagios::Command Nagios::Contact Nagios::ContactGroup Nagios::Host Nagios::Service Nagios::HostGroup Nagios::ServiceEscalation Nagios::HostDependency Nagios::HostEscalation Nagios::HostGroupEscalation Nagios::ServiceDependency -- next two are for status.dat in Nagios 2.x Nagios::Info Nagios::Program EXAMPLE
use Nagios::Object; my $generic_host = Nagios::Host->new( register => 0, parents => undef, check_command => $some_command, max_check_attempts => 3, checks_enabled => 1, event_handler => $some_command, event_handler_enabled => 0, low_flap_threshold => 0, high_flap_threshold => 0, flap_detection_enabled => 0, process_perf_data => 1, retain_status_information => 1, retain_nonstatus_information => 1, notification_interval => $timeperiod, notification_options => [qw(d u r)], notifications_enabled => 1, stalking_options => [qw(o d u)] ); # this will automatically 'use' $generic_host my $localhost = $generic_host->new( host_name => "localhost", alias => "Loopback", address => "127.0.0.1" ); my $hostname = $localhost->host_name(); printf "max check attempts for $hostname is %s. ", $localhost->max_check_attempts; $localhost->set_event_handler( Nagios::Command->new( command_name => "new_event_handler", command_line => "/bin/true" ) ); METHODS
new() Create a new object of one of the types listed above. Calling new() on an existing object will use the LHS object as the template for the object being created. This is mainly useful for creating objects without involving Nagios::Object::Config (like in the test suite). Nagios::Host->new( ... ); dump() Output a Nagios define { } block from an object. This is still EXPERIMENTAL, but may eventually be robust enough to use for a configuration GUI. Passing in a single true argument will tell it to flatten the object inheritance on dump. print $object->dump(); print $object->dump(1); # flatten name() This method is common to all classes created by this module. It should always return the textual name for an object. It is used internally by the Nagios::Object modules to allow polymorphism (which is what makes this module so compact). This is the only way to retrieve the name of a template, since they are identified by their "name" field. my $svc_desc = $service->name; my $hostname = $host->name; Which is just short for: my $svc_desc = $service->service_description; my $hostname = $service->host_name; register() Returns true/undef to indicate whether the calling object is registerable or not. if ( $object->register ) { print $object->name, " is registerable." } has_attribute() Returns true/undef to indicate whether the calling object has the attribute specified as the only argument. # check to see if $object has attribute "command_line" die if ( !$object->has_attribute("command_line") ); list_attributes() Returns a list of valid attributes for the calling object. my @host_attributes = $host->list_attributes(); attribute_type() Returns the type of data expected by the object's set_ method for the given attribute. For some fields like notification_options, it may return "char_flag." For "name" attributes, it will simply return whatever %setup_data contains. This method needs some TLC ... my $type = $host->attribute_type("notification_period"); attribute_is_list() Returns true if the attribute is supposed to be a list (ARRAYREF). if ( $object->attribute_is_list("members") ) { $object->set_members( [$member] ); } else { $object->set_members( $member ); } AUTHOR
Al Tobey <tobeya@cpan.org> Thank you to the fine people of #perl on freenode.net for helping me with some hairy code and silly optimizations. WARNINGS
See AUTHOR. perl v5.12.4 2011-10-22 Nagios::Object(3pm)
All times are GMT -4. The time now is 10:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy