Linux: Find my IP address using Perl at a shell prompt

Posted on in Categories , , , last updated October 18, 2007

Q. How do I find out my IP address assigned to eth0 or ra0 interface using perl?

A. If you need to know the IP address of the UNIX / Linux machine you are running on, use the following perl one liner. Perl don’t have any inbuilt facility but combination of ifconfig command ans shell pipes you can craft something as follows to display your system IP address:

Find my IP address using Perl One liner and shell pipes

Type the following command at a shell prompt:

ifconfig -a | perl -ne 'if ( m/^\s*inet (?:addr:)?([\d.]+).*?cast/ ) { print qq($1\n); exit 0; }'

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

11 comment

  1. sir,

    i’m trainne in system admin i working on thin client

    i’ve tried the code above then i get ip addr but when i simple use ifconfig

    i got the error COMMAND NOT FOUND
    can u tell y

  2. You can use gethostbyname in the Socket package to do the work for you:

    use Socket;
    use strict;

    my ($host) = `hostname`;

    my $iaddr = gethostbyname($host);

    if (defined($iaddr)) {
    print (inet_ntoa($iaddr), “\n”);
    } else {
    die (“ipaddr failed to get IP address for $host\n”);

  3. Snap ([email protected]) says:

    use LWP::UserAgent;
    $browser = LWP::UserAgent -> new() or die “problem dog?\n”;
    $browser -> agent(“niggaBrowzaaa”);
    sub encontrarIP{
    $result = $browser->request(HTTP::Request->new(GET=>$_[0]));
    $content = $result->content;
    $urlLength = @url;

    for ($i=0;$i didn’t worked.\n”;
    print “\nNONE of them worked WTF !!\n”;
    print “worst luck than me ?? \n”;
    print “nah ! you probably aren’t connected\n”;


  4. /sbin/ip -o -4 addr show eth0 | perl -lane 'print $1 if /h(d. E)//'

    More verbose… for the kill…

    perl -MSocket -e 'require "sys/"; socket($sock, PF_INET, SOCK_STREAM, (getprotobyname("tcp"))[2]); $buf = pack("a256", "eth0"); ioctl($sock, SIOCGIFADDR(), $buf); @addr= unpack("x20 C4", $buf); print join(".", @addr),"n";'

Leave a Comment