PIng a toda uNA subnet

Forums: 

:)

Hola:

Necesito que alguien me eche la mano, ando bien novato en esto.

Requiero realizar un script para hacer un ping a toda una subnet y revisar que nodos me contestan, por ejemplo de la direccion 141.197.138.0 a la 141.197.138.255. Intente utilzr el comando ping con el parametro -k y -j, pero nomas no me sale.

Alguien podría ayudarme, se lo agradeceré infintamente.

Gracias.

Saludos!

Atte: Eric Avila
TLN

ping a subnets

Imagen de acl

Lo que quieres hacer es un broadcast. Para eso necesitas especificar la opcion -b y enviar el ping a la direccion 141.197.138.255 y ademas ser root.

Toma en cuenta que es posible que no recibas contestacion de muchos hosts, pues es posible que ignoren los pings que son a broadcast (es configurable).

La otra opcion es hacer un script que haga ping a cada host una cantidad limitada de veces y analice si hubo o no respuesta y luego te reporte los hosts que contestaron (o los que no), pero ya hay varias herramientas que lo pueden hacer por ti.

hazles un nmap -P0 -sS

Imagen de Epe

hazles un nmap -P0 -sS IP/subred

te dará una lista de los hosts que estén con puertos abiertos aún cuando ellos no respondan al ping.

en efecto como te comunican en el post anterior: el -b funcionará sólo para los que se dignen a responderte al ping de broadcast, no es 100% confiable pues algunos hosts pueden dejar de responder.

tampoco mi solución la es, pues te puedes encontrar con algunas máquinas que no tengan puertos abiertos y que tampoco respondan al ping.

Saludos
epe
--
EcuaLinux.com
Ecuador: +(593) 9 9246504, +(593) 2 3412402
USA: +1 305 675 1512, España: +34 917617884


Saludos
epe

EcuaLinux.com

+(593) 9 9924 6504

Servicios en Software Libre

Te paso un script

Imagen de Monkito

Hace algun tiempo necesité lo mismo, hice primero un script que almacenaba las salida del ping en un archivo, y combinando el cat y el grep determinaba si estaba "online" o no el host especificado.

Pero se demoraba cuando los pedidos no eran respondidos

Por eso lo mejoré y ahora en lugar de ping uso nmap mira:


# Variables
tmp=".nmap.tmp"
interval=30
echo ""

# Función que evalua si un host está on line o no con nmap
evalua(){
touch "$tmp"
nmap -sP $1 > $tmp
ff=`cat $tmp | grep "Nmap finished:"`
gg=${ff:28:11}
if [ "$gg" = "(1 host up)" ]
then
echo -e "\033[00;32m"$2" "$1" \033[1;0m"$3

else
echo -e "\033[00;31m"$2" "$1" \033[1;0m"$3
fi
rm "$tmp" -rf
}

# Inicio del programa
#let interval=$interval*2
while [ 1 -le 1 ]; do
clear

echo ""
evalua 172.16.1.14 00:00:00:00:00:00 "Clie-1"
evalua 172.16.1.22 00:00:00:00:00:00 "Clie-2"
evalua 172.16.1.38 00:00:00:00:00:00 "Clie-3"
evalua 172.16.1.46 00:00:00:00:00:00 "Clie-4"

# emulación del retardo
t=0
while [ $t -le $interval ]; do
echo -n "."
sleep 0.5
let t=$t+1
done
done

# Fin de script

Cree una función llamada evalua, tiene 3 parametros, el primero es la direccion ip del host, el segundo y el tercero son comentarios a desplegar, (en mi caso pongo la direccion mac del host y el nombre del cliente al que estoy monitoreando)

Esto desplega una linea con la información suministrada al invocar la función, en color verde si está conectado y en color rojo si no lo está.

Cualquier inconveniente con el script me avisas

bye

NOTA: ya no lo uso porque tengo una herramienta mas pulida, se llama gkrellm2 combinado con un plugin llamado multiping..

Cogito Ergo Sum

------------
counter.li.org

Cogito Ergo Sum

Para saber que hosts

Imagen de RazaMetaL

Para saber que hosts responden al ping en una subred siempre hago esto:


nmap -sP 192.168.0.0/24

Para un grupo de direcciones consecutivas:

nmap -sP 192.168.0.1-99

------------

Antes de preguntar visita el [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

 

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});