Я знаю о методах, где вы можете запустить for
цикл Bash и ping
несколько серверов, есть ли инструмент CLI для Linux, который я могу использовать, что позволит мне сделать это без необходимости писать сценарий Bash для ping
списка серверов один за раз?
Что-то вроде этого:
$ ping host1 host2 host3
ПРИМЕЧАНИЕ: я специально искал CentOS / Fedora, но если он работает и на других дистрибутивах, это тоже хорошо.
networking
ping
icmp
SLM
источник
источник
Ответы:
Если вы посмотрите на проект NMAP, то обнаружите, что он включает в себя дополнительные инструменты помимо всего прочего
nmap
. Одним из таких инструментов являетсяnping
следующее:nping
находится в стандартном репозитории EPEL для загрузки.использование
Чтобы пропинговать несколько серверов, вам нужно просто указать
nping
имена / IP-адреса и какой протокол вы хотите использовать. Здесь, поскольку мы хотим имитировать то, чтоping
делает традиционный CLI, мы будем использовать ICMP.Единственный недостаток, который я обнаружил в этом инструменте, - это использование режима ICMP, требующего прав суперпользователя.
источник
nmap
также поддерживает ICMP напрямую, указав параметр-sn
. Смотрите мой ответ для деталей.fping находится в пакете Fedora с тем же именем и допускает множество хостов или набор IP-адресов.
источник
Описание:
источник
Я бы предложил использовать GNU Parallel
вывод будет чередоваться
источник
Я знаю, что это конкретно не то, что вы просите, а сценарий bash для этого:
Это примет ваши конечные точки в качестве аргументов командной строки и отправит каждому из них пинг с 5 счетами в качестве фонового процесса, а затем дождется завершения всех перед выходом. Он напечатает последние три строки вывода ping, которые содержат полезную статистику о частоте успеха и задержке.
источник
wait
будет ждать всех активных дочерних процессов, поэтому вы можете избежать второго цикла. Я думаю, что одна из причин, по которой его попросили не требовать написания сценария bash, заключается в том, что у него есть решение, которое работает на любой машине без необходимости носить с собой или писать сценарий. Делать его коротким кажется более выгодным, поэтому я думаю, что лучше избегать такого назначения аргументов и просто делать этоfor host; do
в первом цикле. Если бы это было ЗШ, вы могли бы избежатьdo
иdone
и просто сделать, interatively:for host in google.com; ping -c5 "$host" |& tail -3 & wait
command &
) в подоболочках (т.е. упаковке с скобками) иwait
объединить любое количество команд в одну команды искусственной, например:(for f in google.com yahoo.com microsoft.com; do ping $f & done; wait)
. Их выходные данные будут чередоваться, и при нажатии Ctrl + C после этой команды все три дочерних процесса будут уничтожены. Оболочка имеет множество мощных конструкций для управления заданиями, и это одна из них.Я полагаю, это может сделать для вас?
Он использует
printf
способность «автоматически повторять» свои аргументы, повторно используя строку формата над каждым аргументом. Таким образом, вышеприведенноеprintf
создает последовательностьping <hostname> &
строк для каждого хоста, представленную в качестве аргумента, и передает такую последовательность команд через подстановкуeval
команд в команду, чтобы они выполнялись немедленно.printf
иeval
команды стандарт POSIX, а также подстановка команд.Заключение всей подобной команды в подоболочку, содержащую и-ed,
wait
например:предоставляет возможность прерывать все по желанию с помощью простого Ctrl+C.
Иначе вы можете управлять каждой
ping
командой по отдельности через обычное управление заданиями оболочки.Если ваша оболочка поддерживает также подстановки процессов, вы также можете использовать следующее:
на несколько символов меньше, чтобы напечатать.
Суть та же, что и для
eval
, но передает последовательностьping
s в команду.
(akasource
) через замену процесса.источник
Nmap поддерживает пинг-сканирование (ICMP) и несколько хостов:
nmap -sn -n 127.0.0.1 8.8.8.8
Вы также можете создать файл, содержащий все ваши целевые IP-адреса (разделенные пробелами или символами новой строки)
targets.txt
. Затем запустите:nmap -sn -n -iL targets.txt
Варианты объяснил:
-sn
Пинг Скан.-n
Отключить разрешение DNS.-iL
Имя входного файла.Другие интересные варианты, если вы хотите пропинговать действительно большое количество целей:
-T4
Увеличьте время, чтобы уменьшить продолжительность сканирования.--min-parallelism 100
Увеличьте количество параллельных зондов.-oG <file>
Записать результаты сканирования в файл в формате Grepable.Без создания файла
Имейте в виду, что вы также можете отказаться от создания файла и использовать a
-
для получения ввода либо из канала|
, либо с помощью традиционных методов перенаправления вывода через STDIN.Примеры:
-или-
-или-
Ссылки
источник
Используя общую
xargs
команду для построения несколькихping
запросов:Где
host1 host2 host3
может быть переменное количество хостов (любая комбинация IP или имени хоста).Это изменяет
xargs
значения по умолчанию для принудительного ввода 1 входного аргумента на выполнение ping и допускает неограниченное количество параллельных дочерних процессов (1 на хост pinging). Вероятно, было бы целесообразно установить-P
(иначе--max-procs
) правильное значение, если намеревается пропинговать большое количество хостов (все они будут обработаны; только меньшее количество одновременно).Он достаточно короткий для непосредственного использования, может быть добавлен как функция в ваш профиль оболочки или rc-файл или превращен в крошечный скрипт в вашем
$PATH
. В приведенных ниже примерах-P
было установлено значение 10, чтобы избежать чрезмерного потребления ресурсов.Пример скрипта:
/usr/bin/mping
Пример функции внутри
~/.bashrc
И использовать как:
источник
--max-procs
/-P
. Тем не менее, если число узлов меньше-P
, все пинги выполняются параллельно - это означает, что это займет столько времени, сколько будет длиться один самый длинный пинг, а не будет суммой их всех.Я не знаю, что именно вы хотите, но вы могли бы изменить последние 8 битов в десятичное 255, чтобы ваши хосты получали широковещательную рассылку, фактически она будет передавать пинг-пакеты на все устройства, которые существуют в сети.
источник
Выход
источник
&&
оператор разрешает выполнение второй команды только в том случае, если первая команда выполнена успешно (т. Е. Код выхода 0) и 2) первый пинг никогда не закончится, если ^ C не прервет ее. Попробуйте добавить параметры -c и -w. Добро пожаловать на сайт!Просто для удовольствия и выгоды ...
Это может быть легко улучшено. Что делает его довольно полезным. :)
Для дополнительных опций, пожалуйста, смотрите man-страницы для psd ps и Linux ping
НТН
РЕДАКТИРОВАТЬ: немного обновлено, чтобы завершить пинг-запросы @ 6 пингов каждый, и добавить параметры страницы руководства.
источник
ping
вызов никогда не вернется, пока не произойдет фатальная ошибка.Используйте ниже простую команду:
источник