Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Using Ubuntu 10.10, I was wondering if there was a command line command that can list all the IPs of devices connected to the network?

I would use this for example, to list all the computers connected to my home network. Ideally, it needs to be command line as I will be running it from C++.

Any ideas?

share|improve this question
up vote 131 down vote accepted

Check out the arp-scan command - you will probably have to install it eg:

sudo apt-get install arp-scan

And to give further detail:

sudo arp-scan --interface=eth0 --localnet

Where eth0 is your device. You can find your device with:

share|improve this answer
Perfect, thank you. Returns exactly the format I need. – Christopher Gwilliams Mar 24 '11 at 14:09
Works perfectly on OSX too! Installed with Brew, and interface was en0, rather than eth0, but works great. – nthonygreen Apr 13 '13 at 16:00
If your connected to your network using wifi use wlan0 instead of eth0. – Neil Sep 15 '13 at 12:04
Can you get this to list hostnames as well as IP addresses? – user1527227 Feb 4 '14 at 18:57
It's worth noting that this does not use the ARP cache: it performs an actual scan. Unlike most nmap scans, this cannot cross layer 3 boundaries, which is usually what you want in this scenario. (In other words, it's limited to your subnet.) – Zenexer Sep 29 '14 at 12:26

Use nmap. example: nmap -sn The arp cache will only tell you those that you have tried to contact recently.

share|improve this answer
is my given IP? What is 24 in this case? Thanks. – kolonel Apr 20 '15 at 7:15
@kolonel That's just an example. You should substitute it with your network. The 24 is "slash notation" of the subnet mask. It means use 24 bits from the left. It's equivalent to – Keith Apr 25 '15 at 17:05
@Keith do you know how I'd find out my network address to use? Or is it just my IP with 0/24 at the end? – Tom Hart Jan 25 at 11:01

In windows this would be "arp -a" I believe that an equivalent of that in Linux would be "arp -e".

This information can be found from the man page for arp :

arp with no mode specifier will print the current content of the table.
-e : Use default Linux style output format (with fixed columns).
share|improve this answer
That looks like it works (may need to have a play as I am on a public network so it only seems to list all the servers on the network. – Christopher Gwilliams Mar 24 '11 at 13:37
If I am on a home network, will it just list the devices connected to my router? Thanks! – Christopher Gwilliams Mar 24 '11 at 13:37
That command will only list the devices in the hosts current arp cache and that will only be the ones which the host has contacted recently. – Linker3000 Mar 24 '11 at 13:38

If your network is, make an executable file with the following code; Change the 192.168.0 to your actual network.

for ip in 192.168.0.{1..254}; do
  ping -c 1 -W 1 $ip | grep "64 bytes" &
share|improve this answer
Hi Anders... The user's network might not be; I made a note. The site's formatting did not like a bare #!, and so clobbered the formatting of the code snippet: when entering code, use the blockquote or preformatted text buttons, and review your answer for proper formatting before submitting it, as carriage returns, tabs, and spaces might have been stripped. – Nevin Williams May 17 '13 at 19:34
As well, when supplying a script that needs to be put into a file and made executable, rather than simply cut & pasted, it's probably best that you specify this; it may not be obvious to some what all is required to implement your solution. – Nevin Williams May 17 '13 at 19:37
Technically, this will only return hosts that respond to ping. There may be hosts that are connected, but not replying to ICMP echo requests. As well, one can broadcast one packet to an entire network by specifying the broadcast address, which is the last address in the IP network: ping -c 1 -W 1 would accomplish the same as the for loop. – Nevin Williams May 17 '13 at 19:45

Try installing nmap (sudo apt-get install nmap) and type nmap substituting 192.168.1 with the first three parts of your ip address (find out using ip addr).

You can also get a slightly less accurate (in my experience) map of a network by running ping (again substituting 192.168.1), which should issue a ping to every machine on the network, but, in my experience, does not always function correctly.

share|improve this answer
Actually, none of the answers will always work correctly. IP wasn't designed with this requirement in mind, and there are things like Private VLANs which make it impossible to find any other hosts on the same LAN. – Ron Maupin Apr 9 at 23:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .