una - conexiones de red en linux
¿La forma más rápida de hacer ping a un rango de red y devolver hosts receptivos? (6)
Deberías usar NMAP:
nmap -T5 -sP 192.168.0.0-255
Restricciones:
1. La velocidad importa.
2. Tengo permiso para hacer ping una vez.
Estoy debatiendo si usar Python o shellscripting. ¿Hay un método más rápido que bash
?
Aquí está el código actual,
for ip in $(seq int1 int2); do
ping -c 1 xxx.xxx.xxx.$ip | grep "bytes from" &
done
¿Algo más rápido que esto?
El siguiente código (malvado) se ejecuta más de DOS VECES tan rápido como el método nmap
for i in {1..254} ;do (ping 192.168.1.$i -c 1 -w 5 >/dev/null && echo "192.168.1.$i" &) ;done
toma alrededor de 10 segundos, donde el nmap estándar
nmap -sP 192.168.1.1-254
toma 25 segundos ...
Este es el código python para el ping en el rango de 192.168.0.0-192.168.0.100. Puedes cambiar por loop mientras te sientes cómodo.
# -*- coding: utf-8 -*-
import socket
import os
import sys
up_ip =[] #list to store the ip-addresses of server online
for x in range(100): #here range is 0-100. You can change the range according to your comfort
server_ip = ''192.168.0.''+ str(x)
rep = os.system(''ping -c 1 '' + server_ip)
if rep == 0:
upip.append(server_ip)
print ''*******************Server Is Up****************/n''
else:
print ''server is down /n''
print up_ip
Este script se ejecuta en Git Bash (MINGW64) en Windows y devuelve un mensaje dependiendo del resultado del ping.
#!/bin/bash
#$1 should be something like "19.62.55"
if [ -z "$1" ]
then
echo "No identify of the network supplied, i.e. 19.62.55"
else
ipAddress=$1
for i in {1..256} ;do
(
{
ping -w 5 $ipAddress.$i ;
result=$(echo $?);
} &> /dev/null
if [ $result = 0 ]; then
echo Successful Ping From : $ipAddress.$i
else
echo Failed Ping From : $ipAddress.$i
fi &);
done
fi
Prueba esto para obtener una lista única.
ping -c 5 -b 10.10.0.255 | grep ''bytes from'' | awk ''{ print $4 }'' | sort | uniq
otro método (obtiene hosts en vivo):
fping -ag 192.168.1.0/24
Pruebe ambos comandos y vea por usted mismo por qué arp es más rápido:
SILBIDO:
para ip en $ (seq 1 254); hacer ping -c 1 10.185.0. $ ip> / dev / null; ps -eq 0] && echo "10.185.0. $ ip UP" || :; hecho
ARP:
para ip en $ (seq 1 254); hacer arp -n 10.185.0. $ ip | dirección grep; ps -eq 0] && echo "10.185.0. $ ip UP" || :; hecho