Pinga vários IPs, tentando descobrir o hostname e MAC

Publicado por eli marques junior (última atualização em 16/08/2013)

[ Hits: 5.199 ]

Download eping.sh




Pinga vários IPs, tentando descobrir o hostname e MAC.

A saída do script é para ser assim:

10.1.4.28 OK
        CAIXABRANCA
        MAC Address = AC-16-2D-34-9C-BD

10.1.4.29 OK
        CAIXAPRETA  
        MAC Address = AC-16-2D-34-9C-B4

10.41.4.30 DOWN
10.41.4.31 DOWN
10.41.4.32 DOWN


Exemplo:

$ ./eping.sh -p 10.196.1 1 250

  



Esconder código-fonte

#!/bin/bash
#ELI MARQUES JUNIOR
#eli.marquesjunior@gmail.com



function pinga_neles(){
    clear
    num=0
    DIR_cria=/tmp/ping-eli/cria
    DIR=/tmp/ping-eli

    if [ -d "$DIR_cria/pingar" ] && [ -d "$DIR_cria/pingando" ];then
        rm $DIR/ARQ-final.txt
        rm $DIR/RELATORIO.txt
       else
        mkdir -p $DIR_cria/pingar
        mkdir -p $DIR_cria/pingando
    fi

    for (( a=$3; a<=$4; a++ )); do
        echo "
             ping -c 2 $2.$a >> /dev/null
             x=\$?
             if [ \$x -eq 0 ]; then
                echo "$2.$a OK" >> $DIR_cria/ARQ$a.txt
                nmblookup -A $2.$a | egrep -i '(mac|<00>)'| grep -vi \<group\> | cut -d' ' -f1,2-4 >> $DIR_cria/ARQ$a.txt
                echo  " " >> $DIR_cria/ARQ$a.txt
               else
                echo $2.$a DOWN >> $DIR_cria/ARQ$a.txt
             fi

        " >> $DIR_cria/pingar/script.$num.sh
        num=`expr $num + 1`
    done

    cd $DIR_cria/pingar/
    count=`ls | wc -l`
    echo Total: $count
    echo -------------------------
    count0=0
    lock=20

    while [ $count0 -lt $count ]; do

        echo "Falta(m): `expr $count - $count0`"
        mv script.$count0.sh ../pingando/
        sh $DIR_cria/pingando/script.$count0.sh &
        count0=`expr $count0 + 1`

        if [ $count0 == $lock ]; then
            echo Lock: $lock
            tempo=\.
            segundos=1
            while (( $segundos <= 5)); do
            echo -en "\rAguarde $tempo `expr 5 - $segundos`"
            sleep 1
            tempo=$tempo\.
            ((segundos++))
                        if (( $segundos > 5 )); then
                             echo -e "\n"
                        fi
                    done
            lock=`expr 20 + $lock`
        fi
    done

    if [ $count0 == $count ]; then
            tempo=\.
            count=1
            while (( $count <= 10)); do
        echo -en "\rAguarde mais `expr 10 - $count` segundos $tempo"
        sleep 1
                tempo=$tempo\.
                ((count++))
            done

        cat $DIR_cria/ARQ*.txt >> $DIR/ARQ-final.txt
        rm $DIR_cria/ARQ*.txt

        clear
        echo "-------------------------------------------------------"
        rm ../pingando/script.*.sh
        grep -A 3 -i OK $DIR/ARQ-final.txt | grep -vi down >> $DIR/RELATORIO.txt
        grep -i down $DIR/ARQ-final.txt | sort -h >> $DIR/RELATORIO.txt
        more $DIR/RELATORIO.txt
    fi

}


if [ -z "$1" ] || [ "$1" != "-p" ] && [[ "$1" != "-"* ]]; then
      echo "      $script -h for help"
fi

while getopts  ":hp:" opts; do
        script=`echo $0 | cut -d/ -f6`

    case $opts in
        h) echo "    $script -p \"rede\" \"inicio\" \"fim\""
               echo "    ex.: $script -p 10.196.3 1 254";;
        p) pinga_neles $1 $2 $3 $4;;
        :) echo "    Option -p requires an argument."
           exit 1;;
        *) echo "    $script -h for help"
           exit 1;;
    esac
done

Scripts recomendados

Link direto de arquivos no Sharex

Antiprotetor de links

Encerrar sessão no terminal com tempo definido

Backup simples com log de resultado

Eu vejo gente morta. Descubra se alguém já morreu!


  

Comentários
[1] Comentário enviado por ranzes em 16/08/2013 - 20:10h

Parabéns pelo script.
Mas não seria mais fácil rodar nmap com uma linha de comando com 3 parâmentros ?

[2] Comentário enviado por eli.marques em 19/08/2013 - 10:51h


[1] Comentário enviado por ranzes em 16/08/2013 - 20:10h:

Parabéns pelo script.
Mas não seria mais fácil rodar nmap com uma linha de comando com 3 parâmentros ?


Realmente é muito mais fácil utilizar o nmap, mas eu só fiz o script para estudar mesmo ...Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts