Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

egrep - Validando endereço IP

Sempre que precisamos filtrar um arquivo de log ou até mesmo validar o valor de uma variável ou campo, dependendo da variação, a tarefa se torna mais chata e com o endereço de IP não é diferente. Para resolução dessa problema vou utilizar o comando egrep + regex para validar o campo.

Antes precisamos entender o que iremos validar.

  1. Comprimento entre 7 à 15 caracteres
  2. Três pontos, sendo um ponto ao final de cada octeto, exceto o último.
  3. Cada octeto deverá ter entre 1 à 3 digitos.
  4. Cada octeto deverá suportar variação de números entre 0 à 255.
  5. Não pode aceitar zeros consecutivos no mesmo octeto. Exemplo: 00 ou 000
Como eu disse, - A parada é chata !!! kkk

Mas felizmente montei a bendita expressão regular, ficou assim:

'(\s|^)(([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])(\s|$)'

Dessa forma o IP é validado em qualquer posição do texto, até mesmo sozinho.

Vamos testar:

Validando IP em qualquer posição da expressão.

echo "Endereço 10.1.1.1 obtido"  | egrep '(\s|^)(([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])(\s|$)'
Endereço 10.1.1.1 obtido

IP sozinho

echo "10.1.1.1"  | egrep '(\s|^)(([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])(\s|$)'
10.1.1.1

Tentativa com dois zeros consecutivos

echo "Endereço 1.1.00.0 obtido"  | egrep '(\s|^)(([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])(\s|$)'
<vazio>

Tentativa fora da faixa IP.

echo "Endereço 1.1.1.256 obtido"  | egrep '(\s|^)(([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{,2}|2[0-4][0-9]|25[0-5])(\s|$)'
<vazio>

Espero que seja útil pra vocês.

Comentários

Contato

Nome

E-mail *

Mensagem *