Sponsored Content
Full Discussion: Parsing nsupdate's output
Top Forums Shell Programming and Scripting Parsing nsupdate's output Post 302933218 by Chubler_XL on Wednesday 28th of January 2015 05:47:43 PM
Old 01-28-2015
How about this:

Code:
awk '
function getfield(str, pattern, trim) {
    if(!match(str, pattern)) return ""
    return substr(str,RSTART+trim,RLENGTH-trim)
}
function procDNS(rec) {
    if(split(rec,lines,"\\n") < 2) return ""
    updt_line=getfield(rec, "UPDATE SECTION:\n[^\n]+", 16)
    oper=getfield(rec, "status: [^ ,]+", 8)
    fail=getfield(rec, "update failed: [^\n]+", 15)
    print "#### UPDATING CNAME ####"
    print updt_line
    print "OPERATION: " oper
    if(length(fail)) {
       gsub("YXRRSET", "CNAME already exist",fail)
       print "FAIL: " fail
    }
    else print "UPDATE SUCCEDED"
    print ""
    return ""
}
/^Outgoing update/ {A=procDNS(A)}
{A=A "\n" $0}
END{procDNS(A)}
' infile

This User Gave Thanks to Chubler_XL For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

parsing output

I have a file that contains the output of the ls -iR command, something like this: ./results: 2504641011 result_1410 2500957642 result_525 2504641012 result_1425 2500957643 result_540 ./tests/1: 2500788755 1 2500788743 1000 ./tests/2: 2500788759 3 2500788758 999 ... (6 Replies)
Discussion started by: looza
6 Replies

2. AIX

nsupdate - 2 zones are appended to hostname?

Hello, Can someone tell me why I'm getting the following? $sudo nsupdate > update add HOSTNAME.ZONE1 86400 A IP ADDRESS > show Outgoing update query: ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0 ;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0 ;; UPDATE SECTION:... (1 Reply)
Discussion started by: ctcuser
1 Replies

3. Shell Programming and Scripting

Parsing output

I need to parse the following out put and determine if the USB is a DISK and whether or not it's External. If an HBA line contains "USB" then does the next line contain "DISK" and "External". 0:0,31,0: HBA : (aacraid,1) AAC SCSI 0,0,0: DISK : Adaptec ASR4800SAS Volu0001 ... (6 Replies)
Discussion started by: lochraven
6 Replies

4. UNIX for Dummies Questions & Answers

nsupdate falied to update

Hello all, I am new to Unix.. i am trying to implement the TSIG in my BIND and using nsupdate to add record to bind.. this is what i did: generate the TSIG key using : dnssec-keygen HMAC-MD5 -b 128 -n HOST mydns.com forgot to mention: i am using FreeBSD. I then edit the named.conf file... (0 Replies)
Discussion started by: r_de_sousa
0 Replies

5. BSD

nsupdate failed to update

Hello all, I am new to Unix.. i am trying to implement the TSIG in my BIND and using nsupdate to add record to bind.. this is what i did: generate the TSIG key using : dnssec-keygen HMAC-MD5 -b 128 -n HOST mydns.com forgot to mention: i am using FreeBSD. I then edit the named.conf file... (0 Replies)
Discussion started by: r_de_sousa
0 Replies

6. UNIX for Advanced & Expert Users

nsupdate failed to update

Hello all, I am new to Unix.. i am trying to implement the TSIG in my BIND and using nsupdate to add record to bind.. this is what i did: generate the TSIG key using : dnssec-keygen HMAC-MD5 -b 128 -n HOST mydns.com forgot to mention: i am using FreeBSD. I then edit the named.conf file... (1 Reply)
Discussion started by: r_de_sousa
1 Replies

7. Shell Programming and Scripting

Parsing the date output

Hi fellows, I need to define a notification for SSL certificate expiration. My Command output is below: (this is the "Expiration Date") Tue Mar 15 09:30:01 2012 So, at 15th Feb (1 month before the expiration), a notification has to be triggered by a script or sth else. How can i set an... (5 Replies)
Discussion started by: oduth
5 Replies

8. Shell Programming and Scripting

parsing output

Can somebody provide a solution to parse the following; cat /tmp/xxx Name: QUE_REQU (o.mtaseast-o.dmart) (MTPost queue) Number of messages: 66446 (Age 686 min; Size 214 mb) Backlog (messages): 0 (Age 0 min) Name: QUE_REQU... (6 Replies)
Discussion started by: BeefStu
6 Replies

9. Shell Programming and Scripting

Parsing Output of a Variable

i have a log file that contains something similar to this: one two three four five six seven eight nine ten eleven twelve thirteen fourteen one two three four five six seven eight nine ten eleven twelve thirteen fourteen one two three four five six seven eight nine ten eleven twelve... (3 Replies)
Discussion started by: SkySmart
3 Replies

10. Shell Programming and Scripting

Parsing of TOP output

Hi , i am trying to set up an alert, when CPU usage (0.2%us in below output) is more than 40% top | head | grep '^Cpu' Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.1%id, 0.6%wa, 0.0%hi, 0.0%si, 0.0%st using CUT, i pulled the value 0.2 and assigned to CPU (variable) CPU=$(expr `top | head -10... (5 Replies)
Discussion started by: Prateek007
5 Replies
XML::SAX::ByRecord(3pm) 				User Contributed Perl Documentation				   XML::SAX::ByRecord(3pm)

NAME
XML::SAX::ByRecord - Record oriented processing of (data) documents SYNOPSIS
use XML::SAX::Machines qw( ByRecord ) ; my $m = ByRecord( "My::RecordFilter1", "My::RecordFilter2", ... { Handler => $h, ## optional } ); $m->parse_uri( "foo.xml" ); DESCRIPTION
XML::SAX::ByRecord is a SAX machine that treats a document as a series of records. Everything before and after the records is emitted as- is while the records are excerpted in to little mini-documents and run one at a time through the filter pipeline contained in ByRecord. The output is a document that has the same exact things before, after, and between the records that the input document did, but which has run each record through a filter. So if a document has 10 records in it, the per-record filter pipeline will see 10 sets of ( start_document, body of record, end_document ) events. An example is below. This has several use cases: o Big, record oriented documents Big documents can be treated a record at a time with various DOM oriented processors like XML::Filter::XSLT. o Streaming XML Small sections of an XML stream can be run through a document processor without holding up the stream. o Record oriented style sheets / processors Sometimes it's just plain easier to write a style sheet or SAX filter that applies to a single record at at time, rather than having to run through a series of records. Topology Here's how the innards look: +-----------------------------------------------------------+ | An XML:SAX::ByRecord | | Intake | | +----------+ +---------+ +--------+ Exhaust | --+-->| Splitter |--->| Stage_1 |-->...-->| Merger |----------+-----> | +----------+ +---------+ +--------+ | | ^ | | | | | +---------->---------------+ | | Events not in any records | | | +-----------------------------------------------------------+ The "Splitter" is an XML::Filter::DocSplitter by default, and the "Merger" is an XML::Filter::Merger by default. The line that bypasses the "Stage_1 ..." filter pipeline is used for all events that do not occur in a record. All events that occur in a record pass through the filter pipeline. Example Here's a quick little filter to uppercase text content: package My::Filter::Uc; use vars qw( @ISA ); @ISA = qw( XML::SAX::Base ); use XML::SAX::Base; sub characters { my $self = shift; my ( $data ) = @_; $data->{Data} = uc $data->{Data}; $self->SUPER::characters( @_ ); } And here's a little machine that uses it: $m = Pipeline( ByRecord( "My::Filter::Uc" ), $out, ); When fed a document like: <root> a <rec>b</rec> c <rec>d</rec> e <rec>f</rec> g </root> the output looks like: <root> a <rec>B</rec> c <rec>C</rec> e <rec>D</rec> g </root> and the My::Filter::Uc got three sets of events like: start_document start_element: <rec> characters: 'b' end_element: </rec> end_document start_document start_element: <rec> characters: 'd' end_element: </rec> end_document start_document start_element: <rec> characters: 'f' end_element: </rec> end_document METHODS
new my $d = XML::SAX::ByRecord->new( @channels, \%options ); Longhand for calling the ByRecord function exported by XML::SAX::Machines. CREDIT
Proposed by Matt Sergeant, with advise by Kip Hampton and Robin Berjon. Writing an aggregator. To be written. Pretty much just that "start_manifold_processing" and "end_manifold_processing" need to be provided. See XML::Filter::Merger and it's source code for a starter. perl v5.10.0 2009-06-11 XML::SAX::ByRecord(3pm)
All times are GMT -4. The time now is 12:59 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy