Как я могу пропинговать несколько IP-адресов одновременно?

Aparentemente, la marca de tiempo desql_runner.sh(y los otros archivos )está entre 09 :26 :49.000 y 09 :26 :49.999; por lo tanto, es más nuevo que...49 pero no más nuevo que...50. Si desea dividir cabellos segundos, GNU find comparará las marcas de tiempo hasta el nanosegundo:

/* Returns ts1 - ts2 */
static double ts_difference (struct timespec ts1,
                 struct timespec ts2)
{
  double d =  difftime (ts1.tv_sec, ts2.tv_sec)
    + (1.0e-9 * (ts1.tv_nsec - ts2.tv_nsec));
  return d;
}


static int
compare_ts (struct timespec ts1,
        struct timespec ts2)
{
  if ((ts1.tv_sec == ts2.tv_sec) &&
      (ts1.tv_nsec == ts2.tv_nsec))
    {
      return 0;
    }
  else
    {
      double diff = ts_difference (ts1, ts2);
      return diff < 0.0 ? -1 : +1;
    }
}

Estuviste cerca con la sintaxis; use un punto para agregar los segundos fraccionarios, no otros dos puntos:

find./ -type f -newermt '2018-05-24 09:26:50.200'...

22
14.06.2019, 20:46
12 ответов

Используйте следующую простую команду:

$ getip(){ ping -c 1 -t 1 $1 | head -1 | cut -d ' ' -f 3 | tr -d '()' 2>&1 | tee >> /tmp/result.log & }
$ getip 'hostname.number1.net'
$ getip 'hostname.number2.net'
$ getip 'hostname.number3.net'
$ getip 'hostname.number4.net'
$ getip 'hostname.number5.net'
$ getip 'hostname.number6.net'
$ getip 'hostname.number7.net'
$ getip 'hostname.number8.net'
$ cat /tmp/result.log
ABC.DEF.GHI.XY1
ABC.DEF.GHI.XY2
ABC.DEF.GHI.XY3
ABC.DEF.GHI.XY4
ABC.DEF.GHI.XY5
ABC.DEF.GHI.XY6
ABC.DEF.GHI.XY7
ABC.DEF.GHI.XY8
-2
27.01.2020, 19:42

Если вы посмотрите на проект NMAP , вы обнаружите, что он включает в себя дополнительные инструменты помимоnmap. Одним из таких инструментов является nping, который включает в себя следующую возможность:

Nping has a very flexible and powerful command-line interface that grants users full control over generated packets. Nping's features include:

  • Custom TCP, UDP, ICMP and ARP packet generation.
  • Support for multiple target host specification.
  • Support for multiple target port specification.
  • ...

npingнаходится в стандартных репозиториях EPEL для загрузки.

$ repoquery -qlf nmap.x86_64 | grep nping
/usr/bin/nping
/usr/share/man/man1/nping.1.gz

Использование

Чтобы пропинговать несколько серверов, вам просто нужно указать npingимена/IP-адреса и протокол, который вы хотите использовать. Здесь, поскольку мы хотим имитировать то, что делает традиционный pingCLI, мы будем использовать ICMP.

$ sudo nping -c 2 --icmp scanme.nmap.org google.com

Starting Nping 0.7.70 ( https://nmap.org/nping ) at 2019-06-14 13:43 EDT
SENT (0.0088s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=1] IP [ttl=64 id=57921 iplen=28 ]
RCVD (0.0950s) ICMP [45.33.32.156 > 10.3.144.95 Echo reply (type=0/code=0) id=42074 seq=1] IP [ttl=46 id=24195 iplen=28 ]
SENT (1.0091s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=2] IP [ttl=64 id=57921 iplen=28 ]
SENT (2.0105s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=2] IP [ttl=64 id=57921 iplen=28 ]
RCVD (2.0107s) ICMP [45.33.32.156 > 10.3.144.95 Echo reply (type=0/code=0) id=42074 seq=2] IP [ttl=46 id=24465 iplen=28 ]
SENT (3.0138s) ICMP [10.3.144.95 > 64.233.177.100 Echo request (type=8/code=0) id=49169 seq=2] IP [ttl=64 id=57921 iplen=28 ]

Statistics for host scanme.nmap.org (45.33.32.156):
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 86.053ms | Min rtt: 0.188ms | Avg rtt: 43.120ms
Statistics for host google.com (64.233.177.100):
 |  Probes Sent: 2 | Rcvd: 0 | Lost: 2  (100.00%)
 |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 4 (112B) | Rcvd: 2 (108B) | Lost: 2 (50.00%)
Nping done: 2 IP addresses pinged in 3.01 seconds

Единственным недостатком, который я обнаружил в этом инструменте, является использование режима ICMP, требующего привилегий суперпользователя.

$ nping -c 2 --icmp scanme.nmap.org google.com
Mode ICMP requires root privileges.
33
27.01.2020, 19:42

fping находится в одноименном пакете Fedora и позволяет использовать множество хостов или набор IP-адресов.

$ fping -a -A -c 1 hosta hostb
192.168.0.20 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.64/0.64/0.64
192.168.1.3  : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.50/0.50/0.50

fping will send out a ping packet and move on to the next target in a round-robin fashion... if a target replies, it is noted and removed from the list

21
27.01.2020, 19:42

Ради развлечения и выгоды...

#!/bin/sh -

# sends six "pings" to a list of hosts defined in "hosts" below

hosts="
host.a
host.b
host.c
host.d
host.e
"

for p in $hosts
do
# ONLY CHOOSE ONE OF THE FOLLOWING, NOT BOTH
# dump results to file
    ping -c 6 $p >>./PINGED
# dump output to console
    ping -c 6 $p
done

exit

Это может быть легко улучшено. Что делает его довольно полезным.:)

Дополнительные параметры см. на справочных страницах для bsd ping и Linux ping

ХТХ

РЕДАКТИРОВАТЬ :немного изменено, чтобы завершить ping-запросы по 6 пингов каждый и добавить параметры справочной страницы.

-1
27.01.2020, 19:42

Я не знаю, чего именно вы хотите, но вы можете изменить последние 8 бит -, установленные на десятичное число 255, чтобы ваши хосты получали широковещательную рассылку, на самом деле, они будут передавать пакеты ping всем устройствам, которые существуют в сети. сеть.

ping -c 1 xx.xx.xx.255
1
27.01.2020, 19:42
oping host1 host2 host3

Описание:

oping uses ICMP packages (better known as "ping packets") to test the reachability of network hosts. It supports pinging multiple hosts in parallel using IPv4 and/or IPv6 transparently.

This package contains two command line applications: "oping" is a replacement for tools like ping(1), ping6(1) and fping(1). "noping" is an ncurses-based tool which displays statistics while pinging and highlights aberrant round-trip times.

10
27.01.2020, 19:42

Я полагаю, это может сделать для вас?

eval $(printf 'ping "%s" & ' host1 host2 host3)

Он использует способность printf"автоматически -повторять" свои аргументы, в то время как re -использует свою строку формата для каждого аргумента. Таким образом, приведенный выше printfсоздает последовательность строк ping <hostname> &для каждого хоста, предоставленного в качестве аргумента, и передает такую ​​последовательность команд через подстановку команд команде evalдля их немедленного выполнения.

Команды

printfи evalявляются стандартом POSIX, как и подстановка команд.

Включение всей такой команды в подоболочку, содержащую и -ed wait, как это:

(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)

дает возможность прерывать все по желанию простым Ctrl+C .

В противном случае вы можете управлять каждой pingкомандой отдельно через обычное управление заданиями оболочки.

Если ваша оболочка также поддерживает замену процессов, вы также можете использовать следующее:

. <(printf 'ping "%s" & ' host1 host2 host3)

для ввода на несколько символов меньше.

Суть та же, что и для eval, но последовательность pingпередается команде .(, также известной как source), через подстановку процесса.

2
27.01.2020, 19:42
ping google.com && ping localhost

Выход

Pinging google.com [xxxxxxx] with 32 bytes of data:
Reply from xxxxxxx: bytes=32 time=210ms TTL=49
Reply from ::1: time<1ms
Reply from xxxxxxx: bytes=32 time=212ms TTL=49
Reply from ::1: time<1ms
Reply from xxxxxxx: bytes=32 time=211ms TTL=49
Reply from ::1: time<1ms
1
27.01.2020, 19:42

Nmap поддерживает ping-сканирование (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.

Без создания файла

Имейте в виду, что вы также можете отказаться от создания файла и использовать -для получения ввода либо из канала |, либо с помощью традиционных методов перенаправления вывода через STDIN.

Примеры:

$ ( echo www.google.com; echo www.yahoo.com ) | sudo nmap -sn -n -iL -

-или-

$ sudo nmap -sn -n -iL - < <(echo www.google.com; echo www.yahoo.com)

-или-

$ sudo nmap -sn -n -iL - <<< $'www.google.com\nwww.yahoo.com'

Ссылки

2
27.01.2020, 19:42

Я бы предложил использовать GNU Parallel

parallel -u ping ::: host1 host2 host3

вывод будет чередоваться

10
27.01.2020, 19:42

Я знаю, что это конкретно не то, о чем вы просите, а bash-скрипт для выполнения этого:

#!/bin/bash

for host; do
    ping -c5 "$host" 2>&1 | tail -3 &
done

wait

Это примет ваши конечные точки в качестве аргументов командной строки и отправит 5-кратный эхо-запрос на каждую из них в качестве фонового процесса, а затем дождется завершения всех перед выходом.Он напечатает последние три строки вывода ping, которые содержат полезную статистику об успешности и задержке.

4
27.01.2020, 19:42

С помощью общей команды xargsдля построения выполнения нескольких запросов ping:

echo host1 host2 host3 | xargs -n1 -P0 ping -c 4

Где host1 host2 host3может быть переменным количеством хостов (любая комбинация IP или имени хоста ).

Это изменяет xargsзначения по умолчанию, чтобы принудительно использовать 1 входной аргумент при выполнении команды ping и разрешать неограниченное количество параллельных дочерних процессов (1 на каждый проверяемый узел ). Вероятно, разумно установить-P(или--max-procs)на разумное значение, если вы намереваетесь пропинговать большое количество хостов (, все они будут обработаны; только меньше одновременно ).

Он достаточно короткий, чтобы его можно было использовать напрямую, его можно добавить как функцию в ваш профиль оболочки или rc-файл или превратить в крошечный скрипт в вашем $PATH. В приведенных ниже примерах для параметра -Pустановлено значение 10, чтобы избежать чрезмерного потребления ресурсов.

Пример сценария:/usr/bin/mping

#!/bin/sh

echo $@ | xargs -n1 -P10 ping -c4

Пример функции в~/.bashrc

function mping() {
    echo $@ | xargs -n1 -P10 ping -c4
} 

И использовать как:

mping host1 host2 host3...
2
27.01.2020, 19:42

Теги

Похожие вопросы