Verifica duplicação de IPs na rede

Publicado por Osama Jr. (última atualização em 10/07/2010)

[ Hits: 5.929 ]

Homepage: Não tenho

Download find_dup.sh




Simples script que verifica duplicação de IPs na rede. Este script depende de:

- arping
- zenity

  



Esconder código-fonte

#!/bin/bash
#
# Informa duplicação de ip's na rede
# Autor: /bin/laden - 06/07/2010.
#
# Mais detalhes: <man arping> ou <www.google.com> =P
#
# Dependências: 'arping' e 'zenity'.
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
INTERFACE="eth0"

which zenity > /dev/null 2>&1
[ $? -ne 0 ] && { echo "zenity: comando não encontrado."; exit 1 ; }
which arping > /dev/null 2>&1
[ $? -ne 0 ] && { echo "arping: comando não encontrado."; exit 1; }

while true
do   
   ip=$(zenity --title="Checa IP" --entry --text "Endereço IP:")

   [ $? -ne 0 ] && exit $?
   
   # Obrigado a SMarcell <sandro_marcell@yahoo.com.br> pelo exemplo desta função.
   validaIP() {
      local numero_ip=$1

      # Suporte 'built-in' a ER's! legal... =)
      [[ $numero_ip =~ ^[0-9]{2,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] || return 1
      
      local primeiro_octeto segundo_octeto terceiro_octeto quarto_octeto
      
      OLD_IFS=$IFS
      IFS="."
      
      set - $numero_ip
      primeiro_octeto=$1
      segundo_octeto=$2
      terceiro_octeto=$3
      quarto_octeto=$4
      
      IFS=$OLD_IFS
      
      # Checa o 2o octeto especifico de cada faixa
      case $primeiro_octeto in
         10)  [[ $segundo_octeto =~ ^0[0-9][0-9]? ]] && return 1 # Invalida tipos '0x' ou '0xx'
              (( segundo_octeto >= 0 && segundo_octeto <= 255 )) || return 1 ;;
         172) (( segundo_octeto >= 16 && segundo_octeto <= 31 )) || return 1 ;;
         192) (( segundo_octeto == 168 )) || return 1 ;;
         *) return 1
      esac
      
      # Ja que o 3o e 4o octetos sao comuns as tres faixas
      [[ $terceiro_octeto =~ ^0[0-9][0-9]? ]] || [[ $quarto_octeto =~ ^0[0-9][0-9]? ]] && return 1
      (( terceiro_octeto >= 0 && terceiro_octeto <= 255 )) || return 1
      (( quarto_octeto >= 0 && quarto_octeto <= 255 )) || return 1
   }
   
   validaIP $ip
   
   [ $? -eq 1 ] && { zenity --error --text "Endereço IP inválido!" ; continue ; }
   
   break
done
   
ping -c 3 $ip > /dev/null 2>&1
retval=$?
   
if [ $retval -eq 1 ]
then
   zenity --error --text "$ip\nHost de destino inalcansável!"
   exit 1
fi
   
arping -D -I $INTERFACE -c 3 $ip > /dev/null 2>&1
retval=$?
   
if [ $retval -eq 0 ]
then
   zenity --warning --text "$ip\nConflito de IP detectado."
   exit 1 
else
   zenity --info --text "$ip\nNenhum problema encontrado."
   exit 0
fi

Scripts recomendados

Fazendo os leds piscar

Mostrando um exemplo de redirecinamento

Samba - Forçar usuário a alterar senha no próximo logon

Instalador de chaves PGP no APT

for.sh


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts