Script que varre minha rede

0

Eu tenho uma pergunta que quero executar um script que analise minha rede e que eu possa ver com os dispositivos na minha rede. Eu quero colar alguns argumentos também no script

Quando executo o script:

 ./ping.sh --xx-YY 20 50

Saída:

192.168.0.20 is down 

192.168.0.21 is up 
..................................

192.168.0.50 is up
the argument -t , counts 200 by the last digit for ex. ./ping.sh -t 20 output: 192.168.0.220 is up

Mas meu problema é o argumento --up en -mac Eu quero quando eu executo o script ./ping.sh --up, é só exibir os computadores que existem E o argumento - mac também é um problema quando eu executar o script que eu quero exibir os endereços IP e endereço MAC após os computadores são ping **

Alguém pode me ajudar com esses 2 argumentos?

Este é o meu script.

#!/bin/bash

while [[ -n "$@" ]]
do
    case "$1" in

    -h|--help)
    Extension=1
    shift
    ;;

    -XX-YY)
    Extension=2
    shift
    min=$1
    shift
    max=$1
    shift

    ;;

    --up)
    Extension=3
    shift
    end=$1
    shift
    ;;

    -t)
    Extension=4
    shift
    count=$(($1+200))
    shift
    ;;
    esac
done

if [ "$Extension" -eq 1 ] ; then

    echo "dit is de help"

fi


if [ "$Extension" -eq 2 ] ; then

for ((n=$min ; n<=$max ; n+=1))
do
ip=192.168.0.$n
if ping -c 1 -w 1 ${ip} > /dev/null 2> /dev/null >> logping.txt; then
echo "${ip} is up"
else
echo "${ip} is down"
fi
done


fi

if [ "$Extension" -eq 3 ] ; then


                ip=192.168.0.$end
                if ping -c 1 -w 1 ${ip} > /dev/null 2> /dev/null >> /logping.txt; then
                        echo "${ip} is up"

                fi

fi

if [ "$Extension" -eq 4 ] ; then

ip=192.168.0.$count
if ping -c 1 -t 1 ${ip} > /dev/null 2> /dev/null >> logping.txt; then
echo "${ip} is up"
else
echo "${ip} is down"
fi
fi
    
por Kevin Roggeman 28.05.2015 / 10:17

1 resposta

0

Vamos fazer um pedido.

Caso nº 5: -mac ou melhor, --ip
Não há problemas nas linhas "case statement" do seu caso # 5.
Mesmo assim, sugiro que você altere o nome da opção de -mac para --ip . Endereço Mac e Endereço IP são conceitos diferentes e neste caso eu acho que ip é o apropriado.

Matéria de estilo: mesmo que não seja uma regra estrita é comum o uso de um único - se a seguinte opção for composta por apenas uma letra, e o uso de um duplo -- se composto por mais de uma letra. Por exemplo. no mesmo exemplo, você tem -h e --help . (Correto mesmo o --xx-YY ). Os scripts estão inclinados a durar no tempo e será estranho vê-lo com apenas um - .

Voltar para o código do # 5 você pode usar algo semelhante a:

if [ "$Extension" -eq 5 ] ; then
  ip=192.168.1.$mac
   if nmap -sP -n -r $ip | grep "is up" >/dev/null ; then
      echo "${ip} is up"
   fi
fi

Erros nessa tentativa:
ip=192.168.0.$mac é definido em 192.168. 0 .xxx e a linha a seguir não usa a variável $ip e, em vez disso, é usou a sub-rede 192.168. 1 .0/24 . O bloco if... then fi aninhado não é fechado por fi .

** Caso # 3: --up **
Se eu entender corretamente o que você quer dizer, você quer mostrar de alguma forma a lista de todos os hosts up dessa sub-rede. Portanto, você não precisa especificar a variável end para o IP , mas deve verificar toda a sub-rede 192.168.1.xxx .

Você pode usar algo como os seguintes comandos

if [ "$Extension" -eq 3 ] ; then
  sudo nmap -sP -n -r 192.168.1.0/24 | grep -E "Nmap scan|MAC Address:"
fi

Atualização: referências sobre o endereço MAC

por 28.05.2015 / 18:25

Tags