Как я могу пропинговать диапазон адресов, начиная с A и заканчивая B?

4 ответа4

3

Вы можете использовать цикл for для проверки каждого IP-адреса по одному, но это невероятно медленно.

for /l %i in (1,1,255) do ping -n 1 192.168.0.%i | find /i "Reply"
0

Вот как это сделать с тайм-аутом 100 мс и более точным выводом:

FOR /L %i IN (1,1,254) DO @ping -n 1 -w 100 192.168.1.%i | FIND /i "TTL"
0

Чтобы ускорить, по общему признанию, медленный ответ, приведенный выше, и, предполагая, что искомый узел находится на локальной сети или на быстром угасании, добавьте таймаут в пинг (20 миллисекунд здесь):

for /l %i in (1,1,255) do ping -w 20 -n 1 192.168.0.%i | find /i "Reply"

Это полезно, если у вас нет подходящей утилиты и у вас нет порта или вы хотите выполнить сканирование широкого порта, или если клиент не прослушивает какой-либо порт.

0

Давайте лучше поймем эту команду и то, как она на самом деле работает. Команда

for /l %i in (1,1,255) do ping -n 1 192.168.0.%i | find /i "Reply"

говорит: сделать цикл пингов от 1, подсчитывая 1 каждый раз, пока вы не достигнете 255, ожидая только 1 ответ в указанной сети 192.168.0.XXX.

Чтобы указать От А до В находится в (1,1255) части команды. Поскольку (x, y, z) x представляет ваше значение A (или начальную точку для вашего диапазона), y представляет сумму подсчета, чтобы найти следующее значение для попытки, а z представляет значение B (или максимальный конец вашего диапазона) ,

Очень полезная команда, и я делю ее на 3 диапазона, открываю 3 командной строки и запускаю все 3 диапазона одновременно, чтобы ускорить процесс и улучшить читаемость. Читаемость - вот почему я в конечном итоге начал использовать 3 диапазона, потому что выполнение команды полного диапазона даст результаты, да, но прокрутка вверх только возвращает назад, делая ее полезной только для коротких диапазонов.

Диапазон 1-80:

for /l %i in (1,1,80) do ping -n 1 192.168.0.%i | find /i "Reply" 

Диапазон 81-165:

for /l %i in (81,1,165) do ping -n 1 192.168.0.%i | find /i "Reply"

Диапазон от 166 до 255:

for /l %i in (166,1,255) do ping -n 1 192.168.0.%i | find /i "Reply"

Удачи и Наслаждайтесь!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .