Используйте for
l oop с выражением последовательности.
Замените оператор if
на &&
, чтобы объединить ping
и printf
.
for ip in 10.5.99.{1..255}; do ping -w 2 -q -c 1 "$ip" >/dev/null && printf "IP %s is up\n" "$ip" & done
wait
Выражения последовательности являются расширением bash
, поэтому вам нужно изменить #!/bin/sh
на #!/bin/bash
.
Обратите внимание, что это просто проверка одного / 24, а не произвольного блока CIDR. Я не могу придумать способ обобщить это для блоков CIDR в одну строку.