41

I know there is a single line of a command and its arguments that can help display all computer IP addresses (those that are being used) on a LAN, and my computer is also a client, as one of those displayed, but I forgot. What is it?

4

12 Answers 12

35

You could do the arp -a command to show all ARP entries in the table about computers on your network.

Source

3
  • 7
    It shows every system your computer is aware of/talked to - however, it may not be complete - I ran a quick experiment with arp -a and it didn't show one or two of my systems till I pinged it. – Journeyman Geek Jan 18 '14 at 5:46
  • Ya, like the link I posted said, it won't show everything unless it has them stored in the tables so so machines won't be shown but it does do a pretty good list. – GigabitP Jan 18 '14 at 17:35
  • Welcone to Stack Exchange, Gigabit Pony! When a link makes up most of your answer, you should always quote the important parts in case it dies later. See also the howto on writing good answers. – Blacklight Shining Jan 23 '14 at 4:09
28

Not everything with an IP address is a computer - I found none of these suggestions returned all active IP addresses - in fact most returned very few. My home network has a combination of wired and wireless devices and two routers, mobile phones, TV, PVR, Apple AirPort and probably a few things I have forgotten. I used the following to scan all addresses on the 192.168.1.xxx subnet:

for /L %i in (0,1,255) do ping -n 1 -w 250 192.168.1.%i>>ipaddress.txt

The resulting file ipaddress.txt contains the ping results for all addresses and I looked for those with "Received = 1" - currently 16 addresses returned a result - I only have 4 computers in the house - and they were not all on.

5
  • 2
    A suggested edit (rolled back) for /L %i in (0,1,255) do ping -n 1 192.168.1.%i -4 | findstr -m "bytes=32" >> ipaddress.txt has merit, but is not fundamental to the answer, not consistent with the rest of the answer which used Received = 1 rather than bytes=32, and is not necessarily the way I'd have done it. I am adding this comment should anyone find the suggestion useful. – Clifford Jul 21 '17 at 19:57
  • 2
    for /L %i in (1,1,254) might be more appropriate, since xxxxxx.0 is the address of the whole network and xxxxxx.255 is the broadcast address. – Scott Jan 12 '18 at 5:30
  • I consider the rejected edit, which pipes to findstr, an improvement as well. Though isn’t that -m option to findstr wrong? I think you could use no option at all, or -l. And perhaps -i because the string bytes=32 may be localized and thus capitalized. – caw Nov 29 '20 at 4:19
  • @caw Fine, but it was not my answer. The suggester should simply have posted its own answer. However, it simply adds post-processing to filter the result, and that could be done in any number of ways and is not essential to the general method. What anyone does with the result is up to them. – Clifford Nov 29 '20 at 8:52
  • The thing is that the question asked for a way to retrieve certain information. And the improvement suggested in that edit gets you to that information faster, cutting down on the noise. This is not some arbitrary post-processing according to one’s taste. But I agree, editing your answer was the wrong form. Since it’s not a new solution but just an improvement, a separate answer is not warranted, perhaps. But a comment is perfect – which is what you added. Thanks! – caw Dec 1 '20 at 18:00
13

There is the net view /all command which will list all of the computer names that are connected to the same LAN.

From that you can retrieve the individual IP addresses using the nslookup <computer name> command or write a batch script to do it for you.

Here is an example batch I threw together to illustrate.

@echo off
setlocal EnableDelayedExpansion
set "xNext="
set "xComputer="
for /f %%A in ('net view /all') do (
    set "xComputer=%%~A"
    if "!xComputer:~0,2!"=="\\" for /f "tokens=2,* delims=. " %%X in ('nslookup %%A') do (
        if "!xNext!"=="1" (
            echo.!xComputer! = %%X.%%Y
            set "xNext=0"
        )
        if "!xComputer:~2!"=="%%~X" set "xNext=1"
    )
)
endlocal
pause
7

Aside from arp -a, net view /all, or writing a batch script there is no native/built-in command line to do this (at least not that I know of).

If you're willing to use a non-native command, I would suggest using Nmap. You can run nmap -sn 192.168.0.0/24 (replacing the subnet with the appropriate one for your LAN) to achieve what you're looking for, more reliably so than net view /all or arp -a in my opinion.

3

As indicated by someone else, you can use arp -a however make sure that you ping a broadcast address first so that ARP reports all the devices. For example, ping 192.168.0.255

you get a list of all devices connected to the network by their IP and MAC addresses. you can look up the MAC addresses on a website like https://aruljohn.com/mac.pl to find out who the vendor of the NIC is. This should help you narrow down what most of the devices are. i.e. computers, printers, TV, cell phone, etc..

1
  • 1
    that was the trick... Thank you – Umair Iqbal Aug 27 '20 at 6:58
1

I made this PowerShell script for myself:

for ($i = 1; $i -lt 255; $i++) {
    Test-Connection "192.168.173.$i" -Count 1 -ErrorAction SilentlyContinue
}

the result is very easy to read:

Source        Destination     IPV4Address      IPV6Address                              Bytes    Time(ms) 
------        -----------     -----------      -----------                              -----    -------- 
SHUREEK-PC    192.168.173.1   192.168.173.1                                             32       0        
SHUREEK-PC    192.168.173.76                                                            32       388      
SHUREEK-PC    192.168.173.78                                                            32       66       
SHUREEK-PC    192.168.173.110 192.168.173.110  fe80::6160:1756:c397:5d6e%3              32       0        
SHUREEK-PC    192.168.173.188 192.168.173.188                                           32       79       
SHUREEK-PC    192.168.173.191 192.168.173.191                                           32       0        
0
echo ls %USERDNSDOMAIN%|nslookup
1
  • 8
    Welcome to SU. Can you please elaborate on what the command do? – Martin Prikryl May 18 '13 at 8:29
0

ipconfig /all (use forward slash, not backwards)

1
  • 20
    ipconfig lists the interfaces of the PC itself and not the IP addresses used on the LAN. – Christian Aug 11 '15 at 15:47
0

This is my quick solution. It tells you what type of device is connected at each ip address:

netstat -r 
0

display all computer IP addresses (those that are being used)

I think you might mean netstat -a this gives you an active list. If you want to know the program using the ip address then use netstat -b (open as administrator).

1
  • Technically speaking, netstat -a dumps a list of current network connections. The left IP address column contains the local interface. – Ben N Feb 14 '16 at 21:09
0

Short answer... I dont think theres a one line Windows OS command to accommodate easily. The easiest way is to see this list in your router software. Simply enter the Default Gateway IP into your browser and log on to your router. It is usually directly on the 1st page that comes up. BTW - if you don't know your Gateway IP - ipconfig will provide it.

0

If you just want to scan your local network and get a list, then google, download, and run "advanced IP scanner". Its free.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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