it-swarm.com.ru

Пингуют все адреса в сети, windows

Можно ли в строке windows cmd проверить все сетевые адреса (с помощью команды ping или аналогичные), чтобы увидеть, какие из них заняты/имеют активные устройства:

то есть. что-то вроде следующего:

for i = 0 to 255
    ping 192.168.1.i //Print this
end

Это псевдо-код, очевидно. Мне интересно, если это возможно сделать что-то подобное в Windows CMD. Было бы здорово, если бы вам не нужен командный файл, но я понимаю, если это невозможно. 

PS. Также, пожалуйста, укажите, есть ли программа для этого, но было бы неплохо сделать это в cmd. 

45
Fantastic Mr Fox

Откройте командную строку и введите следующее:

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.10.%i | FIND /i "Reply">>c:\ipaddresses.txt

Измените 192.168.10, чтобы соответствовать вашей собственной сети.

Используя -n 1, вы запрашиваете отправку только 1 пакета на каждый компьютер вместо обычных 4 пакетов.

Приведенная выше команда пропингует все IP-адреса в сети 192.168.10.0 и создает текстовый документ на диске C:\с именем ipaddresses.txt. Этот текстовый документ должен содержать только IP-адреса, которые ответили на запрос ping.

Хотя это займет немного больше времени, вы также можете разрешить IP-адреса для имен хостов, просто добавив -a к команде ping.

FOR /L %i IN (1,1,254) DO ping -a -n 1 192.168.10.%i | FIND /i "Reply">>c:\ipaddresses.txt

Это из Здесь

Надеюсь это поможет

98
RGG

Я знаю, что это поздний ответ, но аккуратный способ сделать это - пропинговать широковещательный адрес, который заполняет ваш локальный кэш arp.

Затем это можно показать, запустив arp -a, который выведет список всех адресов в вашей локальной таблице arp.

ping 192.168.1.255
arp -a

Надеюсь, это хороший вариант, который люди могут использовать.

27
egmackenzie

Наилучшая утилита с точки зрения скорости - Nmap .

write @ cmd Подсказка: 

Nmap -sn -oG ip.txt 192.168.1.1-255

это просто пингует все IP-адреса в указанном диапазоне и сохраняет его в простом текстовом файле.

Для сканирования 255 хостов с помощью Nmap требуется всего 2 сек.

15
spetzz

Этот пост задает тот же вопрос, но для Linux - вы можете найти это полезным. Отправить пинг на каждый IP в подсети

nmap, вероятно, лучший инструмент для использования, так как он может помочь определить хост-ОС, а также быстрее. Он доступен для платформы Windows на сайте nmap.org.

5
Paul Allen

При условии, что окно windows находится в той же подсети:

for/L% a in (1,1254) начать пинговать 192.168.0.% a

Это завершится менее чем за 15 секунд и 

arp -a 

вернет любой живой Хост. 

Самый быстрый родной способ, который я знаю в Windows.

3
Vigbjorn

Все, что вам нужно сделать, это посмотреть, подключены ли компьютеры к сети, и собрать их IP-адреса. Вы можете использовать сканер angryIP: http://angryip.org/ , чтобы увидеть, какие IP-адреса используются в определенной подсети или группах подсетей.

Я нашел этот инструмент очень полезным при попытке увидеть, какие IP-адреса используются, которые не находятся внутри моего DHCP.

2
Benjamin Trent

Расширение и полезное дополнение к решению egmackenzie "arp -a" для Windows -

Пример Windows для поиска моего iPhone в сети WiFi

(предварительно: iPhone WiFi отключен)

Смотрите ниже, например:

 enter image description here

Вот хорошая статья об использовании 'arp -d', если вы заинтересованы -

1
J-Dizzle

Похоже, что некоторые вещи изменились в пакетных сценариях в Windows 8, и приведенное выше решение DGG теперь приводит к сбою командной строки.

Следующее решение работало для меня:

@echo off
set /a n=0
:repeat
set /a n+=1
echo 192.168.1.%n%
ping -n 1 -w 500 192.168.1.%n% | FIND /i "Reply">>ipaddresses.txt
if %n% lss 254 goto repeat
type ipaddresses.txt
1
Paul Lammertsma
@ECHO OFF

IF "%SUBNET%"=="" SET SUBNET=10

:ARGUMENTS
ECHO SUBNET=%SUBNET%
ECHO ARGUMENT %1 
IF "%1"=="SUM" GOTO SUM
IF "%1"=="SLOW" GOTO SLOW
IF "%1"=="ARP" GOTO ARP
IF "%1"=="FAST" GOTO FAST

REM PRINT ARP TABLE BY DEFAULT
:DEFAULT
ARP -a
GOTO END

REM METHOD 1 ADDRESS AT A TIME
:SLOW
ECHO START SCAN
ECHO %0 > ipaddresses.txt
DATE /T >> ipaddresses.txt
TIME /T >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO ping -a -n 2 192.168.%SUBNET%.%%i | FIND /i "TTL="  >> ipaddresses.txt
GOTO END

REM METHOD 2 MULTITASKING ALL ADDRESS AT SAME TIME
:FAST
ECHO START FAST SCANNING 192.168.%SUBNET%.X
set /a n=0
:FASTLOOP
set /a n+=1
ECHO 192.168.%SUBNET%.%n%
START CMD.exe /c call ipaddress.bat 192.168.%SUBNET%.%n% 
IF %n% lss 254 GOTO FASTLOOP
GOTO END

:SUM
ECHO START SUM
ECHO %0 > ipaddresses.txt
DATE /T >> ipaddresses.txt
TIME /T >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO TYPE ip192.168.%SUBNET%.%%i.txt | FIND /i "TTL=" >> ipaddresses.txt
FOR /L %%i IN (1,1,254) DO DEL ip192.168.%SUBNET%.%%i.txt
type ipaddresses.txt
GOTO END

:ARP
ARP -a >> ipaddresses.txt
type ipaddresses.txt
GOTO END


:END
ECHO DONE WITH IP SCANNING
ECHO OPTION "%0 SLOW" FOR SCANNING 1 AT A TIME
ECHO OPTION "%0 SUM" FOR COMBINE ALL TO FILE
ECHO OPTION "%0 ARP" FOR ADD ARP - IP LIST
ECHO PARAMETER "SET SUBNET=X" FOR SUBNET
ECHO.
0
Emiel Duivenvoorden