Script que escanea mi red

Script que escanea mi red

Tengo una pregunta. Quiero ejecutar un script que escanee mi red y que pueda ver con dispositivos activos en mi red. Quiero pegar algunos argumentos también en el script.

Cuando ejecuto el script:

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

Producción:

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

Pero mi problema es el argumento --up en -mac que quiero cuando ejecuto el script ./ping.sh --up , solo muestra las computadoras que están activas Y el argumento - mac también es un problema cuando ejecuto el script Quiero mostrar las direcciones IP y la dirección MAC después de que las computadoras hagan ping**

¿Alguien puede ayudarme con estos 2 argumentos?

Este es mi guión.

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

Respuesta1

Hagamos un poco de orden.

Caso #5: -maco, mejor,--ip
No hay problemas en las líneas de "declaración de caso" de su caso n.° 5.
Sin embargo, le recomiendo encarecidamente que cambie el nombre de la opción de-maca--ip. Dirección Mac y Dirección IP son conceptos diferentes y en este caso creo que ipes el apropiado.

Cuestión de estilo: aunque no es una regla estricta es común el uso de un simple -si la siguiente opción está compuesta por una sola letra, y el uso de un doble --si está compuesta por más de una letra. Por ejemplo, en su mismo ejemplo tiene -hy --help. (Corrija incluso el --xx-YY). Los guiones tienden a perdurar en el tiempo y será extraño después verlo con uno solo -.

Volviendo al código del n.° 5, puedes usar algo similar 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

Errores en ese intento:
ip=192.168.0.$macse define en192.168.0.xxxy la siguiente línea no se usa la variable $ip, y en su lugar se usa la subred192.168.1.0/24. El bloque anidado if... then fino está cerrado por un archivo fi.


**Caso #3: --up**
Si entiendo bien lo que quieres decir, querrás mostrar de alguna manera la lista de todos losarribahost en esa subred. Por lo que no es necesario especificar elfinvariables para elIP, pero deberías escanear toda la subred 192.168.1.xxx.

Puedes usar algo como los siguientes comandos

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

Actualización: Referencias sobre la dirección MAC

información relacionada