cant get perl to pull information right


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting cant get perl to pull information right
# 15  
Old 04-06-2009
ok

E:\rich\cli>unix.pl

Code:
Zone=2.0.0.0/8
ParentAddress=
NetworkAddress=2.0.0.0
dnsServers=Iii0S230.svr.sark.net P 0,app1dns90.svr.sark.net S 0,txrtp1dns.svr.sark.net S 0,txrtp2dns.svr.sark.net S 0,app1dns2.svr.sark.net S 0,esfd
ns1.svr.sark.net S 0
RefreshTime=3600
ExpirationTime=1209600
RetryPeriod=900
MinimumTTL=900
NegativeCacheTTL=900
ZoneMail=hostmaster@sark.net
Extensions
        Prefix of zone db file=
        Postfix of zone db file=
BIND-8.X Options
        allow-query=Use Server Value
        allow-transfer=Use Server Value
        allow-update=Use Server Value
        check-names=Use Server Value
        notify=Use Server Value
        zone block of named.conf=
BIND-9.X Options
        allow-notify=Use Server Value
        allow-query=Use Server Value
        allow-transfer=Use Server Value
        allow-update=Use Server Value
        notify=Use Server Value
        zone block of named.conf=
Rich DNS 3.X Options
        Import External Updates=False
        allow-query=Use Server Value
        allow-transfer=Use Server Value
        allow-update=Use Server Value
        check-names=Use Server Value
        notify=Use Server Value
        zone block of named.conf=
Sark DNS 4.X Options
        Import External Updates=False
        allow-notify=Use Server Value
        allow-query=Use Server Value
        allow-transfer=Use Server Value
        allow-update=Use List
                ACL Templates=B1DMZBP
                other=3.3.3.3
        notify=Use Server Value
        zone block of named.conf=
WINDOWS 2000 DNS Options
        aging=False
        allow-transfer=Use List
                List=
        allow-update=No
        no-refresh-interval=0
        notify=Use List
                List=
        refresh-interval=0
        zone-options=

E:\rich\cli>

Code is

Code:
#!/usr/bin/perl
$network = '2.0.0.0/8';
my $dnsoptions = `./getzoneprof -u Xx -p Xx -a $network -o Orig`;
print $dnsoptions;

# 16  
Old 04-06-2009
OK, if this test works then the code I posted previously should work:

Code:
#!/usr/bin/perl
$network = '2.0.0.0/8';
my $dnsoptions = `./getzoneprof -u Xx -p Xx -a $network -o Orig`;
#print $dnsoptions;
@dnsoptions = split(/\r?\n/, $dnsoptions);
print "$_\n" for @dnsoptions;

That should print the same exact thing as previously. If it does this should work:

Code:
my @revlist = `./getrevlist.exe -u xx -p xx -o Orig`;
open(my $out, ">final-results.txt") or die "Could not open output: $!\n";
foreach(@revlist) {
   next unless /,(.*)$/;
   my $network = $1;
   print "Checking $network\n";
   my $dnsoptions = `./getzoneprof.exe -u xx -p xx -a $network -o Orig`;
   my ($Option, $AllowUpdate, $ACLTemplate, $Other) = ('*none*', '*none*', '*none*', '*none*');
   my $flag = 0;
   my @dnsoptions = split(/\r?\n/,$dnsoptions);
   foreach my $line (@dnsoptions){
      last if $flag == 2;
      if ($flag == 1) {
         if ($line =~ /^\s*allow-update=([^\r\n]+)/) {
            $AllowUpdate = $1;
         }
         elsif ($line =~ /^\s*ACL Templates=([^\r\n]+)/) {
            $ACLTemplate = $1;
         }
         elsif ($line =~ /^\s*other=([^\r\n]+)/) {
            $Other = $1;
         }
         elsif ($line =~ /^[A-Z]/) {
            $flag = 2;
         }
      }
      elsif ($line =~ /^Sark DNS 4.X ([^\r\n]+)/) {
         $Option = $1;
         $flag = 1;
      }
   }
   print $out "$network\n";
   print $out "Under Sark DNS 4.X Options field found, ",
              "allow-update is set to $AllowUpdate with the values Template Name=$ACLTemplate ",
              "and other=$Other\n";
}

If it does not work I don't know why. My guess is that getzoneprof.exe may not be returning data (or the same data) for every network you are checking.
# 17  
Old 04-07-2009
What happened? No love?
# 18  
Old 04-07-2009
sorry, I bang my head all day yesterday and passed out. I am trying now
# 19  
Old 04-07-2009
OK tried this:

#!/usr/bin/perl
$network = '2.0.0.0/8';
my $dnsoptions = `./getzoneprof -u Xx -p Xx -a $network -o Orig`;
#print $dnsoptions;
@dnsoptions = split(/\r?\n/, $dnsoptions);
print "$_\n" for @dnsoptions;
Got the output as expected.

When I ran the full code, I get nothing !

2.0.0.0/8
Under Sark DNS 4.X Options field found, allow-update is set to *none* with the values Template Name=*none* and other=*none*
4.0.0.0/8
Under Sark DNS 4.X Options field found, allow-update is set to *none* with the values Template Name=*none* and other=*none*

When I ran this manually.
./getzoneprof -u Xx -p Xx -a $network -o Orig

I got this output as expected

2.in-addr.arpa,2.0.0.0/8
4.in-addr.arpa,4.0.0.0/8

Since we have next unless /,(.*)$/;

I am only interested in stuff after the ","

I still dont know why it ain't working !
# 20  
Old 04-07-2009
Hi Kevin, I think I got it !

I added 'ism' to this line

elsif ($line =~ /^Sark DNS 4.X ([^\r\n]+)/ism) {

ran your code and got....

2.0.0.0/8
Under Sark DNS 4.X Options field found, allow-update is set to Use List with the values Template Name=EXCHANGESVR;B1DMZBP and other=100.100.100.1


Is this possible?
# 21  
Old 04-07-2009
Quote:
Originally Posted by richsark
Hi Kevin, I think I got it !

I added 'ism' to this line

elsif ($line =~ /^Sark DNS 4.X ([^\r\n]+)/ism) {

ran your code and got....

2.0.0.0/8
Under Sark DNS 4.X Options field found, allow-update is set to Use List with the values Template Name=EXCHANGESVR;B1DMZBP and other=100.100.100.1


Is this possible?
Actually the regexp should have really been like this, with the dot escaped:

Code:
elsif ($line =~ /^Sark DNS 4\.X ([^\r\n]+)/ism) {

The "i" makes it case insensitive, the "s" treats it as a single string even if there are embedded newlines in the string and "m" matches over multiple lines. "i" could be returing a true match if the case of the text is different than what you have posted, "s" could be causing the regexp to find the \n on the end and return a true match, personally I thought that would not be necessary to return a true match but maybe it is.

Remove the 's' or the 'm' and try again. See which one is actually causing the regexp to return a true match. My guess is that its the "s". The "i" and "m" might not be doing anything.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl to extract information from a file line by line

In the below perl code I am using tags within each line to extract certain information. The tags that are used are: STB >0.8 is STRAND BIAS otherwise GOOD FDP is the second number GO towards the end of the line is read into an array and the value returned is outputed, in the first line that... (1 Reply)
Discussion started by: cmccabe
1 Replies

2. Shell Programming and Scripting

Pull out information from output logs

My scenario is as follows. 1. I have a reference file with the IP addresses and names $ cat ref.list 10.11.xxx.xxx AA 10.12.xxx.xxx BB 10.13.xxx.xxx CC 10.14.xxx.xxx DD 2. A script runs and gets me one of the IP addresses and puts it in a separate file, for e.g... (2 Replies)
Discussion started by: Nagesh_1985
2 Replies

3. Shell Programming and Scripting

[Solved] How can I pull specific information from PS?

I need to grab information from the output of the ps command. For each line of ps output that contains _progres -b I need to get the word that follows -p. The "-p" can be anywhere after "_progres -b". Using grep to select the correct lines is no problem (e.g. ps -ef|grep "_progres \-b|grep -v... (3 Replies)
Discussion started by: Papa Lee
3 Replies

4. Programming

Adding information to c file using perl

Hi, I have c file which contains more number of tests. two or more tests in one c file. I have the XMl data regarding tests. i need to add this xml data to c file at before the test. I know which file having which test and i created hash table for that. so the problem is i have to add information... (13 Replies)
Discussion started by: veerubiji
13 Replies

5. Shell Programming and Scripting

Parsing information in perl

So i'm trying to write a perl script that logins into a network switch via ssh: #sh ip traffic IP statistics: Rcvd: 1460119147 total, 563943377 local destination 0 format errors, 0 checksum errors, 48401998 bad hop count 0 unknown protocol, 8379279 not a gateway ... (2 Replies)
Discussion started by: streetfighter2
2 Replies

6. Shell Programming and Scripting

perl script to print file information - newbie

Hi I have a perl script that prints all the video and audio file information(playing duration). It works fine in one of my friends linux laptop. But it doesn't work in my both windows and linux. My friend told me I have to do install some module ( ppm instal ...... ) but I have no... (1 Reply)
Discussion started by: srijith
1 Replies

7. Shell Programming and Scripting

Print file information using ffmpeg in perl

I am trying to print file information using ffmpeg tool in perl Here is my code use strict; use warnings; use IPC::Open3; # example my $filename = $ARGV; my %videoInfo = videoInfo($filename); print "duration: " . $videoInfo{'duration'} . "\n"; print "durationsecs: " .... (0 Replies)
Discussion started by: srijith
0 Replies

8. Shell Programming and Scripting

Please do help: Perl Script to pull out rows from a CSV file

I have CSV file that contains data in the format as shown below: ABC, 67, 56, 67, 78, 89, 76, 55 PDR, 85, 83, 83, 72, 82, 89, 83 MPG, 86, 53, 54, 65, 23, 54, 75 .. .. .. .. I want to create a script that will pull out the rows from the above sheet and paste it into another CSV file.... (12 Replies)
Discussion started by: pankajusc
12 Replies

9. Shell Programming and Scripting

Perl: adding columns in CSV file with information in each

Hi Wise UNIX Crew, I want to add 3 different columns to the file in which: 1. The first new column pulls in today's date and time 2. Second column one has a '0' 3. Third column has the word 'ANY' going down the column If my file content is as follows: "7","a","abc",123"... (1 Reply)
Discussion started by: dolo21taf
1 Replies
Login or Register to Ask a Question