Фильтрация вывода команды ping

Изman access.conf:

Each line of the login access control table has three fields separated by a ":" character (colon): permission:users/groups:origins

The first field, the permission field, can be either a "+" character (plus) for access granted or a "-" character (minus) for access denied.

The second field, the users/group field, should be a list of one or more login names, group names, or ALL (which always matches). To differentiate user entries from group entries, group entries should be written with brackets, e.g. (group).

Итак, ваш /etc/security/access.confдолжен выглядеть так:

+ : root : ALL
+ : (group_name) : ALL
- : ALL : ALL
2
23.07.2019, 00:46
2 ответа

Если вы не хотите, чтобы он зависал на «несколько секунд», когда сервер не отвечает, добавьте тайм-аут с помощью опции -W. Например:

ping -c2 -W2 "$1"

-W2устанавливает два -второго времени. Измените лимит в соответствии с вашими потребностями.

В стороне

При ссылке на переменные оболочки, такие как $1, всегда заключайте их в двойные -кавычки, например "$1", если только вы явно не знаете и не хотите разбиение слов и расширение имени пути .

Документация

Изman ping:

-W timeout
Time to wait for a response, in seconds. The option affects only timeout in absence of any responses, otherwise ping waits for two RTTs.

1
27.01.2020, 22:08

Ответ @John1024 подходит -для дистрибутивов Linux. Поскольку ваш вопрос не относится к конкретной операционной системе -, я включу решение BSD.

Команда BSD ping(, а также Mac OS X )имеет большую степень детализации некоторых временных параметров. Большинство сетевых подключений имеют время кругового -обхода намного меньше одной секунды. Действительно, многие соединения имеют RTT менее одной миллисекунды. На справочной странице FreeBSD дляpingуказано, что параметр -Wпринимает аргумент в миллисекундах:

-W waittime

Time in milliseconds to wait for a reply for each packet sent. If a reply arrives later, the packet is not printed as replied, but considered as replied when calculating statistics.

Эквивалентная команда, использующая FreeBSD ping, тогда:

ping -c2 -W2000 "$1"

Более высокое разрешение параметра FreeBSD -Wпозволяет указать значение -W, более близкое к фактическому ожидаемому RTT.

Предположим, что известно, что хост testhostнаходится номинально в 75 миллисекундах, туда и обратно -. Значение -W, равное 80, даст:

jimsdesk : 14:45:58 /root# ping -W80 -c2 testhost
PING testhost (10.111.33.21): 56 data bytes
64 bytes from 10.111.33.21: icmp_seq=0 ttl=240 time=74.385 ms
64 bytes from 10.111.33.21: icmp_seq=1 ttl=240 time=74.478 ms

--- testhost ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 74.385/74.431/74.478/0.046 ms

Меньшее -Wзначение 50 дает:

# ping -W50 -c2 testhost
PING testhost (10.111.33.21): 56 data bytes

--- testhost ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss, 2 packets out of wait time
round-trip min/avg/max/stddev = 74.466/74.538/74.611/0.073 ms

Предположим, что другой хост testhost2находится намного ближе, обычно менее чем в 4 миллисекундах. Мы укажем более жесткий допуск -W, равный 4 миллисекундам. Давайте также увеличим -c, чтобы выбрать большее количество периодов прохождения пакетов :

.
# ping -c10 -W4 testhost2
PING testhost2 (10.216.177.146): 56 data bytes
64 bytes from 10.216.177.146: icmp_seq=0 ttl=59 time=3.730 ms
64 bytes from 10.216.177.146: icmp_seq=1 ttl=59 time=3.899 ms
64 bytes from 10.216.177.146: icmp_seq=2 ttl=59 time=3.949 ms
64 bytes from 10.216.177.146: icmp_seq=3 ttl=59 time=3.668 ms
64 bytes from 10.216.177.146: icmp_seq=4 ttl=59 time=3.881 ms
64 bytes from 10.216.177.146: icmp_seq=5 ttl=59 time=3.725 ms
64 bytes from 10.216.177.146: icmp_seq=6 ttl=59 time=3.826 ms
64 bytes from 10.216.177.146: icmp_seq=8 ttl=59 time=3.726 ms
64 bytes from 10.216.177.146: icmp_seq=9 ttl=59 time=3.728 ms

--- testhost2 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss, 1 packets out of wait time
round-trip min/avg/max/stddev = 3.668/3.867/4.539/0.241 ms

Приведенные выше выходные данные показывают, что девять из десяти пакетов прошли путь туда и обратно за 4 миллисекунды или меньше, а один (seq 7 )этого не сделал.

Еще больше снижая скорость, многие RTT в локальной сети составляют чуть менее миллисекунды, но не всегда. Запуск ping -c100 -W1 10.10.1.1в локальной сети дал:

...
--- 10.10.1.1 ping statistics ---
100 packets transmitted, 100 packets received, 0.0% packet loss, 10 packets out of wait time
round-trip min/avg/max/stddev = 0.664/1.081/18.547/1.898 ms

90 из 100 пакетов вернулись менее чем за миллисекунду, а остальные 10 — нет.

Интерфейс localhost на большинстве компьютеров занимает менее -миллисекунд -. К сожалению, FreeBSD pingне принимает десятичные значения для -W:

.
# ping -c3 -W1 localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.020 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.020 ms

--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.018/0.019/0.020/0.001 ms

# ping -c3 -W.999 localhost
PING localhost (127.0.0.1): 56 data bytes

--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss, 3 packets out of wait time
round-trip min/avg/max/stddev = 0.020/0.022/0.025/0.002 ms

Похоже, что -Wзначение .999анализируется как 0.

1
27.01.2020, 22:08

Теги

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