Confirme se um IP está em uma lista de CIDR

2

Dado um endereço IPv4, é possível verificar se o IP está no intervalo de uma lista de CIDR?

Por exemplo, se eu tiver o seguinte CIDR, há alguma maneira de verificar se 100.31.255.4 está no intervalo de qualquer um dos CIDR?

100.16.0.0/12
100.46.0.0/12
100.100.0.0/24
100.100.5.0/22

De preferência feito usando ferramentas Mac / BSD da bultin.

    
por guest 09.06.2018 / 09:51

1 resposta

3

Usando grepcidr com a lista de blocos de rede em list :

$ echo '100.31.255.4' | grepcidr -f list
100.31.255.4

$ echo '10.31.255.4' | grepcidr -f list
(no output)

Como teste:

if printf '%s\n' "$ipaddr" | grepcidr -f list >/dev/null; then
    printf '%s is in the list\n' "$ipaddr"
else
    printf '%s is not in the list\n' "$ipaddr"
fi
    
por 09.06.2018 / 12:00