Sponsored Content
Full Discussion: Perl Script Help Needed
Top Forums Shell Programming and Scripting Perl Script Help Needed Post 302390680 by SkySmart on Thursday 28th of January 2010 02:47:25 PM
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" );
}

 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
NSLOOKUP(1)							       BIND9							       NSLOOKUP(1)

NAME
nslookup - query Internet name servers interactively SYNOPSIS
nslookup [-option] [name | -] [server] DESCRIPTION
Nslookup is a program to query Internet domain name servers. Nslookup has two modes: interactive and non-interactive. Interactive mode allows the user to query name servers for information about various hosts and domains or to print a list of hosts in a domain. Non-interactive mode is used to print just the name and requested information for a host or domain. ARGUMENTS
Interactive mode is entered in the following cases: 1. when no arguments are given (the default name server will be used) 2. when the first argument is a hyphen (-) and the second argument is the host name or Internet address of a name server. Non-interactive mode is used when the name or Internet address of the host to be looked up is given as the first argument. The optional second argument specifies the host name or address of a name server. Options can also be specified on the command line if they precede the arguments and are prefixed with a hyphen. For example, to change the default query type to host information, and the initial timeout to 10 seconds, type: nslookup -query=hinfo -timeout=10 The -version option causes nslookup to print the version number and immediately exits. INTERACTIVE COMMANDS
host [server] Look up information for host using the current default server or using server, if specified. If host is an Internet address and the query type is A or PTR, the name of the host is returned. If host is a name and does not have a trailing period, the search list is used to qualify the name. To look up a host not in the current domain, append a period to the name. server domain lserver domain Change the default server to domain; lserver uses the initial server to look up information about domain, while server uses the current default server. If an authoritative answer can't be found, the names of servers that might have the answer are returned. root not implemented finger not implemented ls not implemented view not implemented help not implemented ? not implemented exit Exits the program. set keyword[=value] This command is used to change state information that affects the lookups. Valid keywords are: all Prints the current values of the frequently used options to set. Information about the current default server and host is also printed. class=value Change the query class to one of: IN the Internet class CH the Chaos class HS the Hesiod class ANY wildcard The class specifies the protocol group of the information. (Default = IN; abbreviation = cl) [no]debug Turn on or off the display of the full response packet and any intermediate response packets when searching. (Default = nodebug; abbreviation = [no]deb) [no]d2 Turn debugging mode on or off. This displays more about what nslookup is doing. (Default = nod2) domain=name Sets the search list to name. [no]search If the lookup request contains at least one period but doesn't end with a trailing period, append the domain names in the domain search list to the request until an answer is received. (Default = search) port=value Change the default TCP/UDP name server port to value. (Default = 53; abbreviation = po) querytype=value type=value Change the type of the information query. (Default = A; abbreviations = q, ty) [no]recurse Tell the name server to query other servers if it does not have the information. (Default = recurse; abbreviation = [no]rec) ndots=number Set the number of dots (label separators) in a domain that will disable searching. Absolute names always stop searching. retry=number Set the number of retries to number. timeout=number Change the initial timeout interval for waiting for a reply to number seconds. [no]vc Always use a virtual circuit when sending requests to the server. (Default = novc) [no]fail Try the next nameserver if a nameserver responds with SERVFAIL or a referral (nofail) or terminate query (fail) on such a response. (Default = nofail) RETURN VALUES
nslookup returns with an exit status of 1 if any query failed, and 0 otherwise. FILES
/etc/resolv.conf SEE ALSO
dig(1), host(1), named(8). AUTHOR
Internet Systems Consortium, Inc. COPYRIGHT
Copyright (C) 2004-2007, 2010, 2013-2017 Internet Systems Consortium, Inc. ("ISC") ISC
2014-01-24 NSLOOKUP(1)
All times are GMT -4. The time now is 03:54 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy