user8624950
user8624950

Reputation:

Reversing the IP address in Linux using perl

I have a job where I need to do nslookup on an IP address. If it matches then I need to print the name of the host. The problem is that the IP address comes reversed when running the command.

nslookup 10.11.12.13
13.12.11.10.in-addr.arpa

I tried to use reverse but that reversed everything which is not what I want.

my $ip = '13.12.11.10';
$result = reverse($ip);
print $result;

which then prints 01.11.21.31 I do not want to reverse everything, just the full numbers.

Please can someone help?

Upvotes: 0

Views: 379

Answers (2)

user7818749
user7818749

Reputation:

So what we need to do is to just split the actual address, reorder them in reverse and then match the IP to the reversed IP.

use strict;
use warnings;

my $ipaddress = '10.11.12.13';    
my @ip = split /\./,$ipaddress;                      #split the IP by .
my $sserddapi = "$ip[3].$ip[2].$ip[1].$ip[0]";       #reverse it
my @lookup = `nslookup $ipaddress`;                  #do the match
   $lookup[3] =~ s/\s+//g;                           #remove all whitespace
my @device = split /=/, $lookup[3];                  #get the hostname
    if ($lookup[3] =~ /^$sserddapi/) {               #see if it matches
    $lookup[3] =~ s/$sserddapi.in-addr.arpaname=//g; #Remove the unwanted stuff
    print "$ipaddress = $lookup[3]\n";               #print the result
    }

Upvotes: 0

insert_name_here
insert_name_here

Reputation: 447

Simply split the IP address on .s using split, reverse the resulting array, then rejoin it:

join(".", reverse(split(/\./, $ip)))

This will give you the "reversed" IP address, which you can then compare to the nslookup result.

Upvotes: 1

Related Questions