Verifica duplicação de IPs na rede

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

[ Hits: 5.840 ]

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

Teste de Índice de Massa Corporal (IMC)

Abrindo e Fechando a Gaveta do CD-Rom de Forma Interativa

System Software 2.1 - Instale e remova repositórios e programas de forma simples

shell para matar logins aberto com o mesmo usuario

Unrar


  

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