Я пытаюсь написать скрипт, который перечисляет все хосты в моей локальной сети (их около 20) и записывает состояние ping рядом с каждым хостом. У меня есть файл аренды DHCP, поэтому у меня есть все IP-адреса (скажем, 10.0.0.1, 10.0.0.2 и т. Д.), Все, что мне нужно, это состояние ping для каждого хоста.
Итак, мой скрипт запускает один пинг для каждого хоста:
ping -c 1 10.0.0.1
К сожалению, когда хост находится в автономном режиме, пинг занимает много времени для тайм-аута. Я проверил man ping
, кажется, есть два варианта установки задержки: -w deadline
и -W timeout
. Я думаю, что меня интересует последнее.
Итак, я попробовал это:
ping -c 1 -W 1 10.0.0.1
Но ждать одну секунду на автономном хосте все еще слишком долго. Я попытался установить его ниже секунды, но, похоже, этот параметр вообще не учитывается:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
Есть ли способ установить таймаут на более низкое значение? Если нет, есть ли альтернативы?
редактировать
- ОС Debian Lenny.
- Хосты, которые я пытаюсь пропинговать, на самом деле являются точками доступа. Они находятся в той же VLAN и подсети, что и пользователи (для простоты развертывания и замены). Вот почему я не хочу сканировать все подсети (
ping -b
например, с).
Редактировать № 2
Я принял fping
решение (спасибо за все остальные ответы). Эта команда делает именно то, что я искал:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Эта команда занимает не более 500 мсек и дает мне статус ping сразу для всех хостов:
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
На Debian Lenny установка тривиальна:
aptitude update
aptitude install fping
Для людей, которые ищут решение, которое включает в себя
ping
, используйте-i
переключатель.Или, если вы хотите использовать 0.1, вам нужно запустить его как root
Не нужно скачивать дополнительные утилиты.
источник
ping
будет ждать ответа - скорее он просто посылает последовательные пинги быстрее ...Вы можете установить короткий тайм-аут с помощью
timeout
команды в Ubuntu / Debian:источник
timeout (GNU coreutils) 8.4
,DURATION is a floating point number with an optional suffix: 's' for seconds (the default),
... В моем случаеman timeout
отчетыGNU coreutils 8.26
. BWT, я использую Ubuntu 17.04.Я бы использовал Nmap для этой задачи.
nmap -sP --max-retries=1 --host-timeout=1500ms 10.0.0.1
Смотрите документацию nmap для более подробной информации.
источник
Вы можете захотеть взглянуть на инструмент arp ping, если все ваши хосты находятся в физической локальной сети. Он делает то же самое, но использует пакеты arp уровня 2 для выполнения ping. Вы можете использовать комбинацию arpping и icmp ping или фактически tcp ping, чтобы определить причину сбоя. EXample - это сбой tcp-стека, хотя в наши дни это случается редко, мы можем определить, не произошел ли сбой tcp-стека машины, поскольку машина не будет отвечать на ping, однако она будет отвечать на arp (что является другим фрагментом кода на хосте). ,
Используя комбинацию arpping, tcpping и icmp ping, вы можете узнать, произошел ли сбой службы на компьютере, произошел сбой стека tcp или машина полностью заблокирована. Если у вас есть управляемые коммутаторы Ethernet, вы можете получить данные физического канала, показывающие, действительно ли машина включена или была физически отключена. У нас была ситуация, когда машины (клиенты в общественных комнатах) были выключены, мы собирали эти данные и отправляли пробуждение по сетевым пакетам, чтобы включить машины. :-)
Какие бы решения вы ни создавали, если ваша сеть занята, подумайте о реализации какого-либо вида qos, чтобы ваши пакеты мониторинга имели приоритет в сети, а потеря пакетов измерения из-за перегрузки сети может привести к ложным тревогам. Если вы используете qos для мониторинга пакетов, вам нужно подумать о сборе данных об использовании сети.
Таким образом, вы можете сделать свое решение для мониторинга настолько сложным или простым, насколько вам нравится. Мы находим, что даже самая элементарная система мониторинга - это шаг в правильном направлении, по крайней мере, какой-то администратор следит за машинами :-).
удачи!
источник
У @ jordon-bedwell есть отличное предложение.
@ laszlo-valko https://stackoverflow.com/questions/20359487/why-does-ping-not-timeout-in-linux объясняет, что таймауты ping начинаются только после определения IP-адреса. Если вы используете DNS и ваша рабочая станция находится в автономном режиме, тогда ping не может определить IP-адрес и, таким образом, ожидает около 20 секунд по умолчанию, прежде чем вернуть false.
Использование linux-утилиты timeout обеспечивает больший контроль при запуске ping с доменным именем.
Спасибо, парни
источник
Используйте ключ -w как в Windows, так и в Debian.
Это быстрый способ проверить, отвечает ли машина вообще, если предположить, что она ответит вовремя меньше, чем указанное количество секунд.
источник
Если вы можете сканировать свою подсеть (или ее часть), не вызывая тревогу безопасности, и не возражаете против дополнительных данных, Angry IP Scanner быстрый, бесплатный, позволяет сортировать по статусу и может предоставлять более подробную информацию ,
источник
Почему бы не запустить ping в фоновом режиме с выводом во временный файл параллельно для каждого хоста? Затем спите в течение одной секунды, убейте все процессы ping, которые все еще работают, и прочитайте файлы, чтобы собрать выходные данные.
источник
Тайм-аут представляет собой целочисленное значение, указывающее, как долго и долго может быть отправлен пакет. Значения ниже 1 не имеют смысла. Значение 1 указывает, что вы проверяете связь только с непосредственными соседями.
Единственный способ ускорить процесс - запустить проверку данных и получить результаты. Это то, что делают такие инструменты, как Nagios.
источник
Вы можете попробовать что-то вроде этого. Но это займет 15 минут, чтобы бежать.
источник
nmap
будет правильным инструментом для работы.попробуй это:
источник
fping
?ping имеет опции [-t timeout] и [-W waittime], так что вы можете сделать:
источник