Count script wrapper help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Count script wrapper help
# 8  
Old 05-01-2009
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);

# 9  
Old 05-01-2009
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
# 10  
Old 05-01-2009
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
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"
# 12  
Old 05-01-2009
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
# 13  
Old 05-01-2009
OK, I follow you, so what do you recommend?
# 14  
Old 05-01-2009
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
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help needed on wrapper script

Hi Gurus, I need to build a wrapper script which will be passing the loading date and the data file name (provides option to the user to load a single data file or load all the data files) to the actual loader data_load.ksh to load in the database. 1. I want to execute the loader script... (6 Replies)
Discussion started by: express14
6 Replies

2. Shell Programming and Scripting

problem with the my wrapper script

Hi friends, i am working in ksh88. i am running the follwing wapper script in background to run two jobs parallely((eg nohup wrapper.ksh &):: wrapper.ksh ######################## #!/bin/ksh nohup ./pii_insert.ksh /nsing83/p2/test & nohup ./pii_update.ksh... (1 Reply)
Discussion started by: neelmani
1 Replies

3. Shell Programming and Scripting

Wrapper script Oracle look KSH

I have a KSH script that I want to call in a loop for each row in the above table --- new_script.ksh (psuedo code) the contents on this new script would be something like below... for t in (select table_name,schema_name from laod_table) loop /bin/load_table.ksh t.table_name... (4 Replies)
Discussion started by: vr23
4 Replies

4. UNIX for Advanced & Expert Users

Pass parameter to the main script from wrapper script

Hi, I am writing a wrapper script(wrap_script.sh) to one of the main scripts (main_script.sh) The main script is executed as following: ./main_script.sh <LIST> <STARTDATE> <ENDDATE> looks for a parameter which is a LIST(consists of different list names that need to be processed), START/END... (0 Replies)
Discussion started by: stunnerz_84
0 Replies

5. Shell Programming and Scripting

Wrapper Script Help With Perl Scripts

I have tried looking through wrapper scripts throughout the forum, but I don't think they were able to answer my question (either that or I'm just confused). Basically, I have a Perl script that I want to run in parallel 4 times with parameters, wait for all of them to finish, then run another... (8 Replies)
Discussion started by: kooshi
8 Replies

6. Shell Programming and Scripting

wrapper script in perl

Hi, I am in need of way to facilitate this senerio in a perl script. I have CLI ( command line interface) which I run like so: kip-tepltist -u Xxx -p Xxx Which produces tones of names from each template it found: 194Iselin-NJ 33-IDFLB-North-611-Woodward-8600 ... (5 Replies)
Discussion started by: richsark
5 Replies

7. Shell Programming and Scripting

Help with a wrapper script not working

Hello, I have the below wrapper script: #!/usr/bin/perl -w if ($^O eq 'MSWin32' ) { $subnet = 'c:\path\to\subnet.txt'; } else { $subnet = '/opt/qip/wrapper-del-sub'; } open FH1, 'jj-deleted-subnets.txt' or die "Can't open 'jj-deleted-subnets.txt' ... (0 Replies)
Discussion started by: richsark
0 Replies

8. Shell Programming and Scripting

Korn Shell Wrapper script

Hi Guys, I am trying write a wrapper script but I don't have any idea. I have 4 different korn shell scripts and all of them needs some parameters from command line (positional parameter). My script cant be interactive because its supposed to be automated. I am confused how can I write a wrapper... (6 Replies)
Discussion started by: pareshan
6 Replies

9. UNIX for Dummies Questions & Answers

What is a wrapper script

I tried searching the forum ,,but couldn't locate ..Can anyone give me a link or some information about wrapper script. (1 Reply)
Discussion started by: thana
1 Replies

10. UNIX for Dummies Questions & Answers

What is wrapper script and how to write

hi guys, I have a requirement to run a script 4 times with different parameter values. the 4 jobs have to run parallely which actually access different data of same table and deletes. how can i achieve this.................? Thanks in advance (1 Reply)
Discussion started by: chiru
1 Replies
Login or Register to Ask a Question