Script que verifica minha rede

Script que verifica minha rede

Tenho uma dúvida: quero executar um script que verifique minha rede e que eu possa ver se os dispositivos estão ativos em minha rede. 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 que eu quero quando executo o script ./ping.sh --up , é apenas exibido os computadores que estão ativos E o argumento - mac também é um problema quando executo o script Quero exibir os endereços IP e o endereço MAC depois que os computadores fizerem ping **

Alguém pode me ajudar com esses 2 argumentos?

Este é o meu roteiro.

#!/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

Responder1

Vamos fazer alguma ordem.

Caso nº 5: -macou, melhor,--ip
Não há problemas nas linhas de "declaração de caso" do seu caso nº 5.
Mesmo assim, sugiro fortemente que você altere o nome da opção de-macpara--ip. Endereço Mac e Endereço IP são conceitos diferentes e neste caso acho que ipé o mais adequado.

Questão de estilo: mesmo que não seja uma regra estrita é comum o uso de um único -se a opção seguinte for composta por apenas uma letra, e o uso de um duplo --se for composto por mais de uma letra. Por exemplo, no seu mesmo exemplo você tem -he --help. (Corrija até o --xx-YY). Os scripts tendem a durar no tempo e será estranho vê-los com apenas um arquivo -.

Voltando ao código nº 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 em192.168.0.xxxe na linha seguinte não é usada a variável $ip, mas sim a sub-rede192.168.1.0/24. O if... then fibloco aninhado não é fechado por um fi.


**Caso #3: --up**
Se bem entendi o que você quer dizer, você quer mostrar de alguma forma a lista de todos osacimahost nessa sub-rede. Então você não precisa especificar ofimvariável para oPI, mas você 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 endereço MAC

informação relacionada