Perl Script Help Needed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl Script Help Needed
# 1  
Old 01-28-2010
Perl Script Help Needed

I need this script to be able to check both IPs that are given to it and exit with an OK... if one of those expected IPs is returned.

The script is run like this:


/bin/dns_checker.pl -s 69.34.55.66 -q htt.jababa.com -e 69.44.56.33,45.47.43.55

Right now, the script is failing, but when I only specify one IP it passes for both of the IPs.

basically, i want this dns query script to pass if it finds just one of the IPs in the list of IPs given to it. the list of IPs given is what i bolded.

thank you guys

Code:
#use strict;
use Getopt::Long;
use utils qw(%ERRORS);
use vars qw($opt_V $opt_h $opt_H $opt_w $opt_c $warning $critical);


my $PROGNAME = "check_dns";
my $VERSION = "Beta 1";
my $query = "/usr/bin/host";

sub messages();

Getopt::Long::Configure('bundling');
GetOptions
        ("V"   => \$opt_V, "version"    => \$opt_V,
         "h"   => \$opt_h, "help"       => \$opt_h,
         "q=s" => \$opt_q, "query=s" => \$opt_q,
         "s=s" => \$opt_s, "server=s" => \$opt_p,
         "e=s" => \$opt_e, "expected=s" => \$opt_e);


messages();
if ($opt_V) { print $Messages{Version} and exit $ERRORS{'UNKNOWN'}; }
if ($opt_h) { print $Messages{Usage} and exit $ERRORS{'UNKNOWN'}; }
print $Messages{Files} and exit unless (-x $query);
unless ($opt_q && $opt_s) { print $Messages{Usage} and exit $ERRORS{'UNKNOWN'}; }
my $response = `$query $opt_q $opt_s`;
my @response = split('\n', $response);
my @expected = split(',', $opt_e);
my $success = '';
my $fail = '';
my $critical = '';
my $timeout = '';
messages();
@expected = sort(@expected);
IP: foreach my $ip (@expected) {
        my $found = 0;
        foreach (@response) {
        print $Messages{'Timeout'} and exit $ERRORS{'CRITICAL'} if /connection timed out/;
        print $Messages{'Failure'} and exit $ERRORS{'CRITICAL'} if /not found/;
        #$found = 1 and last if /$opt_q has address $ip/; # This doesnt work because the 'host' command resolves the query string to it's alias
        $found = 1 and last if /has address $ip/;
        }
        $success .= "$ip, " if $found;
        $fail .= "$ip, " unless $found;
}
chop $success && chop $success;
chop $fail && chop $fail;
messages();
print $Messages{'Warning'} and exit $ERRORS{'WARNING'} if $fail;
print $Messages{'Ok'} and exit $ERRORS{'OK'} if $success;
print "Unknown Output\n" and exit;

sub messages () {
%Messages = (   'Files'         => "make sure $query exists and is executable.\n",
                'Timeout'       => "Connection Timed Out, DNS Unavailable!.\n",
                'Failure'       => "Critical: $opt_s returned $opt_q not found.\n",
                'Version'       => "$PROGNAME Version: $VERSION\n",
                'Ok'            => "Ok: $opt_s returned $success on query for $opt_q.\n",
                'Warning'       => "Warning: $opt_s did not return $fail on query for $opt_q.\n",
                'Usage'         => "Usage: $PROGNAME -s <server> -q <query> -e <expected>\n"
                                        ."\t<server> = DNS Server to query\n"
                                        ."\t<query> = DNS record to query\n"
                                        ."\t<expected> = comma seperated lists of expected IP's\n" );
}

# 2  
Old 01-28-2010
wow what a mess!
what is the point of $found?

you are doing $found = 1 and last

so $success .= "$ip, " if $found; never gets done
# 3  
Old 01-29-2010
Quote:
Originally Posted by bigearsbilly
wow what a mess!
what is the point of $found?

you are doing $found = 1 and last

so $success .= "$ip, " if $found; never gets done

i didn't write the script. dont know perl all that well at all. so i dont know what to do with this script to get it to do what i want, which i think is simple.

i just want to be able to check if one of two IPs that I pass to this script is returned, and if so, exit with an OK. if both of the IPs passed to the script isn't returned in the query, then exit with a warning,critical or anything else negative.
# 4  
Old 02-01-2010
I'm guessing no one really knows how to modify this script? Smilie
# 5  
Old 02-01-2010
First: don't bump up your thread.
Second: we're not here to do your work.

Third: Getopt::Long supports the automatic truncating of options down to the unique part of the option, so you don't really have to specify the one-letter options yourself. See Case and abbreviations in perldoc Getopt::Long
Fourth: Getopt::Long supports arguments with multiple values by using an array-ref. See Options with multiple values in the documentation, including an example on how to mix that with lists of arguments separated by commas.
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 Perl Script to Handle Log files that are rotated using logrotate

Hello all, I am working on a perl script which will read weblogic logfile and send the error messages to Zenoss Monitoring tool. At present the script works and it can able to send the error messages to Zenoss. The problem comes when the logrotate has been applied to the weblogic log file. At... (3 Replies)
Discussion started by: kar_333
3 Replies

2. Shell Programming and Scripting

Help needed in calling path file from Perl script.

Hi All, I need help in accessing a path file (path.xyz_pqr) not having a shell shebang and exporting paths in the following syntax, export DB_SCRIPT_PATH="/abc/aash/scripts/db_scripts/xyz_pqr" export SRC_FILES_DIR="/bcd/fdw/incoming/xyz_pqr" I need to use the path contained in the... (8 Replies)
Discussion started by: xtatic
8 Replies

3. Shell Programming and Scripting

Help needed with Perl Script

i have the following script: #!/usr/local/bin/perl use STUN::Client; use Data::Dumper; use strict; my $stun_client = STUN::Client->new; $stun_client->stun_server('10.59.29.14'); my $r = $stun_client->get; my $ip = $r->{ma_address}; print "IP: $ip\n\nResult (hash):... (5 Replies)
Discussion started by: SkySmart
5 Replies

4. Shell Programming and Scripting

shell or perl script needed for ldif file to text file conversion

This is the ldf file dn: sdcsmsisdn=1000000049,sdcsDatabase=subscriberCache,dc=example,dc=com objectClass: sdcsSubscriber objectClass: top postalCode: 29600 sdcsServiceLevel: 10 sdcsCustomerType: 14 givenName: Adelia sdcsBlackListAll: FALSE sdcsOwnerType: T-Mobile sn: Actionteam... (1 Reply)
Discussion started by: LinuxFriend
1 Replies

5. Shell Programming and Scripting

Shell or perl script needed

Hi! I have a curl call which gets me the following output: curl http://hostname1.qa.com:8888/getlist OUTPUT - { "token" = "201119041112"; "apps" = { "PaymentApp" = "http://hostname1.qa.com:2333/cgi-bin/Jboss/PaymentApp-EMEA.woa/paymentInfo"; "OrderConsumer" =... (4 Replies)
Discussion started by: jacki
4 Replies

6. Shell Programming and Scripting

Perl script needed

For the following command I need a perl script equivalent with a couple of more things - cat /tmp/mail |grep Appname > /tmp/mail1;cat /tmp/mail >> /tmp/mail1; mail -s "mail subject here" allan@mail.com < /tmp/mail1; >/tmp/mail ; >/tmp/mail1 ================== cat /tmp/mail ***** Alert *****... (4 Replies)
Discussion started by: jacki
4 Replies

7. Shell Programming and Scripting

Perl script help needed..

Hi, I am new to perl scripting. Can anybody help me in solving the below problem. I have file, which is called map_file. According to map_file's last column data, i need a output file, which has repeats as like the map_file's last column name. Thank you in advance Vasanth (5 Replies)
Discussion started by: vasanth.vadalur
5 Replies

8. Shell Programming and Scripting

Simple Script needed for Processing CSV file perl

I am new to perl, and need a script to pull a CSV file, strip out 2 leading columns, and 2 ending columns, and resave the file in a new location. The file is basic and has less than 10,000 records. Secondly, can I schedule perl scripts to run daily? Can someone provide the basic script to... (1 Reply)
Discussion started by: cobbjob
1 Replies

9. Shell Programming and Scripting

Assistance needed with perl script

Ok, theres a log file containing the below. Lets call the logfile log_fantastic: 2009/03/16 21:42:45 USER: tonnabo - MAC: 0014BF2D385A - STATUS_ID: 30 - STATE: ERROR 2009/03/16 21:42:45 USER: tonnabo - MAC: 001310AC120D - STATUS_ID: 15 - STATE: OK 2009/03/16 21:42:45 USER: tonnabo - MAC:... (5 Replies)
Discussion started by: SkySmart
5 Replies

10. Shell Programming and Scripting

Script Needed Urgent in shell or PERL!!!!!!!!!!!!!!!!!!!!

My I/p FIle #%npr # { { collectionBeginTime_Date 19Jul2007 granularityPeriod 900 NODEID BSC19 RLC_Raw_Blocksize_CS2 2048 START_DATE 19Jul07 measTimeStamp_Date 20Jul2007 COLLECTION_INTERVAL_MINS 15 RLC_User_Blocksize_CS2 1024 ... (1 Reply)
Discussion started by: aajan
1 Replies
Login or Register to Ask a Question