Is there a bash command to find the IP address for an Ubuntu box? I need to find the IP address so I can ssh into the machine later.

link|improve this question
2  
Maybe should be on superuser? – Kyle Brandt Jul 27 '09 at 18:23
1  
Seemed like a network configuration question. Also, I'm not in the SuperUser beta. – opierce Jul 27 '09 at 18:28
@opierce, have you tried getting into the beta? – nik Jul 27 '09 at 18:39
2  
@opierce: toward tht end, the "blog" link at the bottom of the page is helpful. Look back a bit... – dmckee Jul 27 '09 at 20:28
Joined SU, thanks! – opierce Jul 28 '09 at 20:54
feedback

13 Answers

up vote 20 down vote accepted

/sbin/ifconfig -a

link|improve this answer
Yup and if you're planning on remotely administering the server, vi /etc/network/interfaces and set the interface to static (see help.ubuntu.com/8.10/serverguide/C/network-configuration.html) – gravyface Apr 28 '10 at 13:26
feedback

If you have an internal address in use, checking

curl http://myip.dnsomatic.com

might be a good idea on unix shells.
Or, just plonk that URL into your browser.


If you get a different answer from the "ifconfig -a" result,
the ifconfig gave your internal address -- which will probably not work from outside.


Even if all seems fine, you could have a firewall in place that will disallow incoming ssh connections.
At which time you should try the port of interest from a browser on the machine at,

http://www.canyouseeme.org/

That will confirm connectivity through,

  • external IP address (showing it to you on that page)
  • NAT, Port Forwards
  • Firewalls
link|improve this answer
True, but if that is the case, there are probably no NAT/Port Forwarding rules in place to match ssh to whatever the internal IP is. – Kyle Brandt Jul 27 '09 at 18:25
@Kyle, Which can be added... – nik Jul 27 '09 at 18:30
I wish I knew this command before ! thanks – petrus Apr 6 '11 at 18:17
+1 for curl http://myip.dnsomatic.com – JatSing Feb 16 at 2:46
feedback

You can use:

/bin/ip addr
link|improve this answer
feedback
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

If you need your internal adress append your interface after ifconfig, e.g.

 /sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
link|improve this answer
+1, this is exactly what I needed to solve a problem. Hurray for one-liners! – J. Polfer Feb 26 '10 at 18:53
+1 Without the head -1: /sbin/ifconfig|grep inet|sed 's/\:/ /'|awk 'NR==1 {print $3}' – joeslice Jul 7 '10 at 15:40
feedback

If you are behind a NAT, and need the public IP, use this:

wget -q -O - checkip.dyndns.org|sed -e 's/.Current IP Address: //' -e 's/<.$//'

taken from: http://www.go2linux.org/what-is-my-public-ip-address-with-linux

link|improve this answer
feedback
 curl icanhazip.com

tee hee!

From http://www.commandlinefu.com/commands/view/2966/return-external-ip

link|improve this answer
feedback

If you need to find out what the IP address of your router, you could run this command.

dig +short myip.opendns.com @208.67.222.222 @208.67.220.220

If you are using OpenDNS for your dns server, you could shorten it to:

dig +short myip.opendns.com

You could also use this command.

curl http://myip.dnsomatic.com
link|improve this answer
feedback

The simplest way to go about it is probably

ifconfig eth0

assuming the machine has a single IP address on the default wired interface - you might need

ifconfig wlan0

if it's on WiFi.

link|improve this answer
feedback
ip address show scope link

It will show you the IP address of living - has link - interfaces. But it is not a bash command. Bash has no ability to know about IP and network at all.

link|improve this answer
feedback

What I understand is you want to connect a remote ubuntu machine which has dynamic ip. Go dyndns.org site and open a free account. Then on the remote machine you need to install a dynamic ip tool.

sudo aptitude install dyndns-client

so you can ssh remote machine via

ssh username@yourdynamicnamealias.dyndns.org

So after configuration you will never need the remote machine ip address.

link|improve this answer
This is my preferred method for dealing with dynamic IPs. dyndns.org is a fantastic, free service. – John Barrett Aug 12 '09 at 8:40
feedback

I once golfed the extraction of IP address on Linux:

http://www.catonmat.net/blog/golfing-the-extraction-of-ip-addresses-from-ifconfig/

link|improve this answer
feedback

/bin/hostname -i

link|improve this answer
feedback

If you have multiple interfaces, could be useful to specify which one you want IP. if you want IPV4 address of interface 'eth0':

ip addr show dev eth0 | grep "inet " | awk '{ print $2 }' 

if you want IPV6 address of interface 'eth0':

ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }' 

if you want to search for an IP between two common interfaces of a laptop, wlan0 and eth0:

CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
    if [ -z $CURRENT_IP ]; then
        CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
    fi
done
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.