richsark
asked on
Condition needs fixed in my script
Hello,
I am still in a learning phase with perl and been using things I have learned from this forum to help me. But my requirments are comming to fast for me to catch up.
I have a series of CLI's that I need to run that do different things.
The first part getdnsvrlst.exe -u xXx -p Xxx -o orig produces all the servers in a format like so, notice some have names with out the comma,
iol2su16.lab.one.net
ure13nse01.svr.one.net,169 .81.48.53
ikl3nse02.svr.one.net,169. 81.54.53
gtysdie.lab2.one.net
ftredns.svr.one.net,10.164 .1.53
I need to only focus on the the first part before the comma if there is a comma from the list above.
so:
iol2su16.lab.one.net
ure13nse01.svr.one.net
ikl3nse02.svr.one.net
gtysdie.lab2.one.net
ftredns.svr.one.net
Then I capture this output.
The next part I run getzonext.exe which will reference the capture from above and hopefully grab the requirements from the first part (above)
The contents from getzonext.exe looks like this,
ServerName=dns2.svr.sark.n et
ParameterName=Corporate Extension
options {
forwarders {
115.110.102.150; // RDM
195.180.150.196; // SDC2
};
forward only;
minimal-responses yes;
allow-transfer { "GIINLL"; };
allow-query { any; };
notify no;
version "";
recursive-clients 2000;
edns-udp-size 512;
};
include "db.INCLUDE.logging";
include "db.INCLUDE.forwarders-cor e";
I only want to know what
allow-transfer indidates, it could be anything, see one example:
allow-transfer { "GIINLL"; };
So my final-results-EXT.txt should read:
print OUT "$DNS_Server\nUnder corp extention field found allow-update is set to = $option\n\n";
or
The DNS_Server named iol2su16.lab.one.net under corp extention field found allow-update= GIINLL
Can someone modify my script to do this?
Please ignore
if($option =~ /Any|none|Use Server Value|Use List|localhost|localnets/) {
because the options can be anyting words, numbers etc... I was using a script that an expert helped me with and I tried to play with it. But it aint doining what I asked it to.
Thanks
I am still in a learning phase with perl and been using things I have learned from this forum to help me. But my requirments are comming to fast for me to catch up.
I have a series of CLI's that I need to run that do different things.
The first part getdnsvrlst.exe -u xXx -p Xxx -o orig produces all the servers in a format like so, notice some have names with out the comma,
iol2su16.lab.one.net
ure13nse01.svr.one.net,169
ikl3nse02.svr.one.net,169.
gtysdie.lab2.one.net
ftredns.svr.one.net,10.164
I need to only focus on the the first part before the comma if there is a comma from the list above.
so:
iol2su16.lab.one.net
ure13nse01.svr.one.net
ikl3nse02.svr.one.net
gtysdie.lab2.one.net
ftredns.svr.one.net
Then I capture this output.
The next part I run getzonext.exe which will reference the capture from above and hopefully grab the requirements from the first part (above)
The contents from getzonext.exe looks like this,
ServerName=dns2.svr.sark.n
ParameterName=Corporate Extension
options {
forwarders {
115.110.102.150; // RDM
195.180.150.196; // SDC2
};
forward only;
minimal-responses yes;
allow-transfer { "GIINLL"; };
allow-query { any; };
notify no;
version "";
recursive-clients 2000;
edns-udp-size 512;
};
include "db.INCLUDE.logging";
include "db.INCLUDE.forwarders-cor
I only want to know what
allow-transfer indidates, it could be anything, see one example:
allow-transfer { "GIINLL"; };
So my final-results-EXT.txt should read:
print OUT "$DNS_Server\nUnder corp extention field found allow-update is set to = $option\n\n";
or
The DNS_Server named iol2su16.lab.one.net under corp extention field found allow-update= GIINLL
Can someone modify my script to do this?
Please ignore
if($option =~ /Any|none|Use Server Value|Use List|localhost|localnets/)
because the options can be anyting words, numbers etc... I was using a script that an expert helped me with and I tried to play with it. But it aint doining what I asked it to.
Thanks
#!perl -w
use strict;
print my @revlist = `getdnsvrlst.exe -u xXx -p Xxx -o orig`;
#my @extlist=
open OUT, ">final-results-EXT.txt" or die;
foreach(@revlist) {
if(/(.*?),/) {
my $DNS_Server = $1;
print "Checking $DNS_Server\n";
print my $dnsoptions = `getzonext.exe -u Xxx -p xXx -D $DNS_Server`;
if($dnsoptions =~ /options\.x allow-transfer=(.*?)$/ism) {
# print "$DNS_Server: allow-update=$2\n";
my $option = $2;
if($option =~ /Any|none|Use Server Value|Use List|localhost|localnets/) {
print "$option matched criteria\n\n";
print OUT "$DNS_Server\nUnder corp extention field found allow-update is = $option\n\n";
}
}
else {
# print nothing
}
}
}
close OUT
ASKER
Hi Adam, The allow-transfer part may not yeild the words GIINLL. it could be any variable from words to IP addresses. I just gave one example of many variables.
The allow transfer may be on many lines, but I have not determind that. Can we add a something as an option in the event I need to use it? or shall we wait.
Thanks
The allow transfer may be on many lines, but I have not determind that. Can we add a something as an option in the event I need to use it? or shall we wait.
Thanks
If you know what it will look like, post an example here, and we can help. If you don't know now, leave the script as is, then update later if necessary. What I posted will get everything between the double-quotes.
I just noticed that line 14 in what I posted should not be there - just remove it.
I just noticed that line 14 in what I posted should not be there - just remove it.
ASKER
Ok, I ran it, I got an error:
Can't locate object method "er" via package "GIINLL" (perhaps you forgot to load "GIINLL"?) at E:\rich\cli\11.pl line 14.
Can't locate object method "er" via package "GIINLL" (perhaps you forgot to load "GIINLL"?) at E:\rich\cli\11.pl line 14.
ASKER
Opps. we crossed posting, will remove line 14
ASKER
Adam, I think dont put whats in the double quotes because I found an instance of
allow-transfer { none; };
So perhaps what ever is in the { } is better
allow-transfer { none; };
So perhaps what ever is in the { } is better
next unless $dnsoptions =~ /allow-transfer\s*=\s*\{\s*(.*?)\s*\}/im;
ASKER
Hi Adam, nothing is being written to my file "final-results-EXT.txt"
ServerName=rich1nees01.svr .us.sark.n et
ParameterName=Corporate Extension
options {
version "";
notify no;
allow-transfer { none; };
minimal-responses yes;
forwarders {
145.180.254.53; // test
195.180.174.53; // qtest RAC
155.182.238.53; // qtest CRC1
};
forward only;
};
ServerName=rich1nees01.svr
ParameterName=Corporate Extension
options {
version "";
notify no;
allow-transfer { none; };
minimal-responses yes;
forwarders {
145.180.254.53; // test
195.180.174.53; // qtest RAC
155.182.238.53; // qtest CRC1
};
forward only;
};
It was looking for "allow-transfer ="... there shouldn't be an equal sign.
next unless $dnsoptions =~ /allow-transfer\s*\{\s*(.*?)\s*\}/im;
ASKER
Ok,
Getting close: got an error;
Use of uninitialized value in concatenation (.) or string at E:\rich\cli\11.pl line 16.
I put the corrections below:
Getting close: got an error;
Use of uninitialized value in concatenation (.) or string at E:\rich\cli\11.pl line 16.
I put the corrections below:
#!perl -w
use strict;
my @revlist = `getdnsvrlst.exe -u xXx -p Xxx -o orig`;
open(my $out, ">final-results-EXT1.txt") or die "Could not open output file: $!\n";
foreach(@revlist) {
next unless /(.*?),/;
my $DNS_Server = $1;
print "Checking $DNS_Server\n";
my $dnsoptions = `getzonext.exe -u Xxx -p xXx -D $DNS_Server`;
next unless $dnsoptions =~ /allow-transfer\s*\{\s*(.*?)\s*\}/im;
my $option = $2;
print $out "$DNS_Server Under corp extention field found allow-update is = $option\n\n";
}
close($out);
ASKER
I fixed it ( beleive it or not) I corrected update is = $dnsoptions\n\n";
I am getting a whole buch of output, cant we just foucus on what I need Servername and allow-transfer=
I am getting a whole buch of output, cant we just foucus on what I need Servername and allow-transfer=
#!perl -w
use strict;
my @revlist = `getdnsvrlst.exe -u xXx -p Xxx -o orig`;
open(my $out, ">final-results-EXT1.txt") or die "Could not open output file: $!\n";
foreach(@revlist) {
next unless /(.*?),/;
my $DNS_Server = $1;
print "Checking $DNS_Server\n";
my $dnsoptions = `getzonext.exe -u Xxx -p xXx -D $DNS_Server`;
next unless $dnsoptions =~ /allow-transfer\s*\{\s*(.*?)\s*\}/im;
my $option = $2;
print $out "$DNS_Server Under corp extention field found allow-update is = $dnsoptions\n\n";
}
close($out);
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Ok, will try now.
ASKER
As always a Genius.... a simple Genius..
Open in new window