Sponsored Content
Top Forums Shell Programming and Scripting Extracting information from Config files /text processing Post 302278624 by oconmx on Tuesday 20th of January 2009 05:58:28 PM
Old 01-20-2009
Question Extracting information from Config files /text processing

Hello All,

This is my first post on this forums, which I consider one of the best of its kind. The reason for my post is that I want to export some information form Nagios configuration files to a DB. I know that there are other tools available to do this, like NDO, monarch, etc... But I want to do it my self as I have different requests and I will like to improve my scripting capabilities Smilie

This is an example from hosts.cfg file:

Code:
# 'SACVMW02' host definition
define host{
        use                     generic-host            ; Name of host template to use
        host_name               SACVMW02
        alias                   ESX SERVER
        address                 10.10.10.110
        check_command           check-host-alive
        contact_groups          NETWORKSGDL,CSG,DBAS,OPSGSSC
        notification_interval   30
        notification_period     24x7
        notification_options    d,r
        }

# 'CALUX901' host definition
define host{
        use                     generic-host            ; Name of host template to use
        host_name               CALUX901
        alias                   Calgary Unix Servers
        address                 10.120.240.16
        check_command           check-host-alive
        contact_groups          MONITORING,CAL-UNIX-ADMINS,NETWORKSGDL
        notification_interval   60
        notification_period     24x7
        notification_options    d,r
        }

I will like to know if there is a way to use a for loop that reads the text inside the { }'s, to define the first column inside it as a variable (or array in case of contact_groups, which has many comma separated values) and second column as value. It will also have to discard comments (# and ; lines)

Any suggestion is welcome, I already did some scripts that do the job using grep, sed and awk; reading line by line, but I think that there are other easier approaches that might improve the script, like reading text blocks instead of lines....

Thank you all!
Carlos
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Extracting information from text fields.

Dear friends, I'm a novice Unix user and I'm trying to learn the ropes. I have a big task I have to accomplish and I'm convinced Unix can get the job done, I just haven't figured out how. I recently posted on the topic of cutting text between unique text patterns and somebody helped me a great... (24 Replies)
Discussion started by: spindoctor
24 Replies

2. Shell Programming and Scripting

Extracting data from text file based on configuration set in config file

Hi , a:) i have configuration file with pattren <Range start no>,<Range end no>,<type of records to be extracted from the data file>,<name of the file to store output> eg: myfile.confg 9899000000,9899999999,DATA,b.dat 9899000000,9899999999,SMS,a.dat b:) Stucture of my data file is... (3 Replies)
Discussion started by: suparnbector
3 Replies

3. Shell Programming and Scripting

processing file names using text files

Hi, I have to perform an iterative function on a set of 10 files. After the first round the output files are named differently than the input files. examples input file name = xxxx1.yyy output file name = xxxx1_0001.yyy I need to rename all of the output files to the original input... (5 Replies)
Discussion started by: ligander
5 Replies

4. UNIX for Advanced & Expert Users

Extracting the required text from log files

It would be highly appreciable if any one helps me in this. I am trying to get it done through Java but I love unix and believe it can be done within minutes with couple of lines. The input log file is a text file contains multiple entries seperated by a blank line. Each seperated entry... (7 Replies)
Discussion started by: hareeshram
7 Replies

5. Shell Programming and Scripting

Extracting anchor text and its URL from HTML files in BASH

Hi All, I have some HTML files and my requirement is to extract all the anchor text words from the HTML files along with their URLs and store the result in a separate text file separated by space. For example, <a href="/kid/stay_healthy/">Staying Healthy</a> which has /kid/stay_healthy/ as... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

6. Shell Programming and Scripting

matching and extracting info from text files

Hi all, I have two .txt file i.e. First text file: 2 4 1 4 Second text file 2 1.nii.gz 4 334.nii.gz 1 12.nii.gz 4 134.nii.gz If entry in 1st column of 1st text file matches the 1st column of 2nd text file, then copy the file (name of which is the second column) associated with... (4 Replies)
Discussion started by: vd24
4 Replies

7. Shell Programming and Scripting

Extracting/condensing text from multiple files to multiples files

Hi Everyone, I'm really new to all this so I'm really hoping someone can help. I have a directory with ~1000 lists from which I want to extract lines from and write to new files. For simplicity lets say they are shopping lists and I want to write out the lines corresponding to apples to a new... (2 Replies)
Discussion started by: born2phase
2 Replies

8. Programming

extracting text files

i m unable to extract data from one text files to different text files..i am able to concat two text files in d same file ---------- Post updated at 03:21 PM ---------- Previous update was at 03:16 PM ---------- i want a c program for it (2 Replies)
Discussion started by: asd123
2 Replies

9. Shell Programming and Scripting

extracting information from multiple files

Hello there, I am trying to extract (string) information ( a list words) from 4 files and then put the results into 1 file. Currently I am doing this using grep -f list.txt file1 . and repeat the process for the other 3 files. The reasons i am doing that (a) I do know how to code (b) each file... (4 Replies)
Discussion started by: houkto
4 Replies

10. Programming

awk processing / Shell Script Processing to remove columns text file

Hello, I extracted a list of files in a directory with the command ls . However this is not my computer, so the ls functionality has been revamped so that it gives the filesizes in front like this : This is the output of ls command : I stored the output in a file filelist 1.1M... (5 Replies)
Discussion started by: ajayram
5 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 01:24 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy