Count script wrapper help - Page 2 | Unix Linux Forums | Shell Programming and Scripting

  Go Back    


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

Count script wrapper help

Shell Programming and Scripting


Closed Thread    
 
Thread Tools Search this Thread Display Modes
    #8  
Old 05-01-2009
richsark richsark is offline
Registered User
 
Join Date: Feb 2009
Last Activity: 6 December 2013, 8:08 AM EST
Posts: 133
Thanks: 7
Thanked 0 Times in 0 Posts
Hi ,

This is what the end result to your code: Unless I pasted it wrong.

I still get that dang error ( but looks a little different)

Checking 10.0.0.0/8
Checking 146.149.0.0/16
Error 48: This subnet does not exist.
146.149.0.0/16
getobjectlst.exe :146.149.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
Checking 161.16.0.0/16
Error 48: This subnet does not exist.
161.16.0.0/16
getobjectlst.exe :161.16.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
Checking 161.56.0.0/16


Code:
#!perl -w
my %counts;
my @subnettype;
my @dnsoptions;
my @dnsoptions2;
my @subnetpart2;
my $snetpart2;
my $subnet;
open(my $log, ">log-external-.txt") or die "Could not open log: $!\n";
printf $log "Subnet,Static,DHCP,Unused\n";
##### Step 1, read subnets
open(my $in, "<m-names.txt") or die "Could not open m-names2.txt: $!\n";
while(<$in>) {
#next unless /(.*?)\/(.*)$/;
#next unless /(.*?)$/;
chomp;
  $subnet = $_;
  print "Checking $subnet\n";
  @dnsoptions = `./getobjectlst.exe -u xx -p xx -a $subnet -o Rich`;
  # Now, at this point, we may have "Error 48" in @dnsoptions, or we may have
  # the nicely formatted output. We'll have to check for both cases here.
  # Let's check the unsuccessful case first. The condition below checks if
  # the first element of @dnsoptions array has the following text in it -
  # "Error 48: This subnet does not exist." in it.

if (not defined($dnsoptions[0])) {
    print "dnsoptions is null or undefined, going on to the next subnet\n";
    next;
  
  if (join(" ",@dnsoptions) =~ /Error 48: This subnet does not exist./) {

    # call "getsubnetlst.exe", passing $subnet as one of the parameters
    @subnetpart2 = `./getsubnetlst.exe -u xx-p xx -a $subnet -t network -o Rich`;
    # now loop through each element of the array @subnetpart2, which looks like this - 
    # ##########################################################################
    # "East" "146.149.1.0" "N" "" "146.149.0.0" " " " " "255.255.255.128"
    # ##########################################################################
    # pick up the 2nd field from the left (e.g. 146.149.1.0 above), and pass it as
    # a parameter to the cli "getobjectlst.exe".


    foreach my $line (@subnetpart2) {
      # get the 2nd field from the left
      $snetpart2 = (split/"\s+"/, $line)[1];
      # and now pass it to "getobjectlst.exe"; assign the output to
      # the array @dnsoptions2
      @dnsoptions2 = `./getobjectlst.exe -u xx -p xx -a $snetpart2 -o Rich`;
      # find out counts of each subnettype (4th field from left)
    foreach my $line (@dnsoptions2) {
        @subnettype = split/"\s+"/, $line;
        $counts{$subnettype[3]}++;
      }
    }
  } else # successful output from getobjectlst.exe
  {
    # find out counts of each subnettype (4th field from left)
    foreach my $line (@dnsoptions) {
      @subnettype = split/"\s+"/, $line;
      $counts{$subnettype[3]}++;
    }
  }
  printf $log "%s,%d,%d,%d\n", $subnet, ($counts{Static} or 0), ($counts{DHCP} or 0), ($counts{Unused} or 0);
  %counts = ();
}
}
close($in);
close($log);

Sponsored Links
    #9  
Old 05-01-2009
durden_tyler's Avatar
durden_tyler durden_tyler is online now Forum Advisor  
Registered User
 
Join Date: Apr 2009
Last Activity: 25 October 2014, 9:01 PM EDT
Posts: 1,841
Thanks: 7
Thanked 266 Times in 241 Posts
What's the output of the following program ?


Code:
#!perl -w
my @dnsoptions;
my $subnet;
open(my $in, "<m-names2.txt") or die "Could not open m-names2.txt: $!\n";
while(<$in>) {
  next unless /(.*?)\/(.*)$/;
  $subnet = $1;
  print "Checking $subnet\n";
  @dnsoptions = `./getobjectlst.exe -u Xxx-p Xxx -a $subnet -o rich`;
  if (@dnsoptions) { # @dnsoptions is not empty
    if (join(" ",@dnsoptions) =~ /Error 48: This subnet does not exist./) {
      print "dnsoptions contains the Error 48.\n";
    } else {
      print "dnsoptions was created successfully, it's size = $#dnsoptions\n";
    }
  } else {
    print "dnsoptions is null or undefined, going on to the next subnet\n";
  }
}
close($in);

tyler_durden
Sponsored Links
    #10  
Old 05-01-2009
richsark richsark is offline
Registered User
 
Join Date: Feb 2009
Last Activity: 6 December 2013, 8:08 AM EST
Posts: 133
Thanks: 7
Thanked 0 Times in 0 Posts
HI, here ya go

$ perl tyler.pl
Checking 10.0.0.0
dnsoptions was created successfully, it's size = 253
Checking 146.149.0.0
Error 48: This subnet does not exist.
146.149.0.0
getobjectlst.exe :146.149.0.0: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
Checking 161.16.0.0
Error 48: This subnet does not exist.
161.16.0.0
getobjectlst.exe :161.16.0.0: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
Checking 161.56.0.0
Error 48: This subnet does not exist.
161.56.0.0
getobjectlst.exe :161.56.0.0: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
Checking 162.2.0.0
dnsoptions is null or undefined, going on to the next subnet
Checking 162.5.0.0
    #11  
Old 05-01-2009
richsark richsark is offline
Registered User
 
Join Date: Feb 2009
Last Activity: 6 December 2013, 8:08 AM EST
Posts: 133
Thanks: 7
Thanked 0 Times in 0 Posts
HI,

This maybe a clue..

we need to retain the mask bit "/16" or what ever is set on the m-names.txt file when it calls getsubnetlst.exe

This is the code ran manually
./getsubnetlst.exe -u xx -p xx -a 146.149.0.0/16 -t network -o Rich

"East" "146.149.89.0" "Y" "" "146.149.0.0" " " " " "255.255.255.224"
"West" "146.149.89.64" "Y" "" "146.149.0.0" " " " " "255.255.255.224"
"" "146.149.90.0" "Y" "" "146.149.0.0" " " " " "255.255.255.0"
"" "146.149.91.0" "N" "" "146.149.0.0" " " " " "255.255.255.0"
Sponsored Links
    #12  
Old 05-01-2009
durden_tyler's Avatar
durden_tyler durden_tyler is online now Forum Advisor  
Registered User
 
Join Date: Apr 2009
Last Activity: 25 October 2014, 9:01 PM EDT
Posts: 1,841
Thanks: 7
Thanked 266 Times in 241 Posts
The following code uses the entire line from "m-names2.txt" i.e. "167.0.0.0/8" instead of just "167.0.0.0".


Code:
#!perl -w
my @dnsoptions;
my $subnet;
open(my $in, "<m-names2.txt") or die "Could not open m-names2.txt: $!\n";
while(<$in>) {
  $subnet = $_;
  print "Checking $subnet\n";
  @dnsoptions = `./getobjectlst.exe -u Xxx-p Xxx -a $subnet -o rich`;
  if (@dnsoptions) { # @dnsoptions is not empty
    if (join(" ",@dnsoptions) =~ /Error 48: This subnet does not exist./) {
      print "dnsoptions contains the Error 48.\n";
    } else {
      print "dnsoptions was created successfully, it's size = $#dnsoptions\n";
    }
  } else {
    print "dnsoptions is null or undefined, going on to the next subnet\n";
  }
  print "====================================\n";
}
close($in);

But I think the problem lies in this line: "@dnsoptions = `./getobjectlst.exe -u Xxx-p Xxx -a $subnet -o rich`;".

It does not capture stderr of getobjectlst.exe, which is thrown out to the terminal (the text in bold red below).


Code:
Checking 146.149.0.0
Error 48: This subnet does not exist.
146.149.0.0
getobjectlst.exe :146.149.0.0: Error code = 48
dnsoptions is null or undefined, going on to the next subnet

If "getobjectlst.exe" fails, then the text in bold red does not get assigned to @dnsoptions.
But if "getobjectlst.exe" is successful, then the output does get assigned to @dnsoptions.

tyler_durden
Sponsored Links
    #13  
Old 05-01-2009
richsark richsark is offline
Registered User
 
Join Date: Feb 2009
Last Activity: 6 December 2013, 8:08 AM EST
Posts: 133
Thanks: 7
Thanked 0 Times in 0 Posts
OK, I follow you, so what do you recommend?
Sponsored Links
    #14  
Old 05-01-2009
richsark richsark is offline
Registered User
 
Join Date: Feb 2009
Last Activity: 6 December 2013, 8:08 AM EST
Posts: 133
Thanks: 7
Thanked 0 Times in 0 Posts
I ran your latest test code, this is what I got:

$ perl tyler1.pl
Checking 10.0.0.0/8

dnsoptions was created successfully, it's size = 253
====================================
Checking 146.149.0.0/16

Error 48: This subnet does not exist.
146.149.0.0/16
getobjectlst.exe :146.149.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
====================================
Checking 161.16.0.0/16

Error 48: This subnet does not exist.
161.16.0.0/16
getobjectlst.exe :161.16.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
====================================
Checking 161.56.0.0/16

Error 48: This subnet does not exist.
161.56.0.0/16
getobjectlst.exe :161.56.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
====================================
Checking 162.2.0.0/16

Error 48: This subnet does not exist.
162.2.0.0/16
getobjectlst.exe :162.2.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
====================================
Checking 162.5.0.0/16

dnsoptions was created successfully, it's size = 1021
====================================
Checking 162.15.0.0/16

Error 48: This subnet does not exist.
162.15.0.0/16
getobjectlst.exe :162.15.0.0/16: Error code = 48
dnsoptions is null or undefined, going on to the next subnet
====================================
Checking 162.30.0.0/16
Sponsored Links
Closed Thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
wrapper script in perl richsark Shell Programming and Scripting 5 03-23-2009 04:41 PM
Help with a wrapper script not working richsark Shell Programming and Scripting 0 03-09-2009 01:49 PM
Korn Shell Wrapper script pareshan Shell Programming and Scripting 6 12-23-2008 12:56 PM
What is a wrapper script thana UNIX for Dummies Questions & Answers 1 01-28-2008 07:11 AM
What is wrapper script and how to write chiru UNIX for Dummies Questions & Answers 1 06-12-2006 05:23 AM



All times are GMT -4. The time now is 09:05 PM.