¿Hay una forma de línea de comandos para enviar pings a cada computadora en una subred? Al igual que Enviar un ping a cada IP en una subred
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
para hacer cumplir la resolución ARP?
¿Hay una forma de línea de comandos para enviar pings a cada computadora en una subred? Al igual que Enviar un ping a cada IP en una subred
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
para hacer cumplir la resolución ARP?
Yo sugeriría el uso de fping con la opción de máscara, ya que no se restringe a sí mismo en el ping.
fping -g 192.168.1.0/24
La respuesta será fácil de analizar en un script:
192.168.1.1 is alive
192.168.1.2 is alive
192.168.1.3 is alive
192.168.1.5 is alive
...
192.168.1.4 is unreachable
192.168.1.6 is unreachable
192.168.1.7 is unreachable
...
Nota: Con el argumento de -a
restringirá la salida de direcciones IP accesibles, es posible que desee utilizar de otra manera fping también imprimir direcciones inalcanzables:
fping -a -g 192.168.1.0/24
de hombre;
fping es diferente de la de ping en que usted puede especificar cualquier número de objetivos en la línea de comandos, o especificar un archivo que contiene las listas de objetivos hacer ping. En lugar de enviar a un destino hasta que se agote el tiempo de espera o responda, fping enviará un paquete de ping y pasará al siguiente objetivo de forma rotativa.
Más información: http://fping.org/
Así fping es mucho más ligero que nmap – urnenfeld
Compruebe si this blog post tiene lo que necesita.
difusión de ping:
$ ping 192.168.1.255
PING 192.168.1.255 (192.168.1.255): 56 data bytes
64 bytes from 192.168.1.154: icmp_seq=0 ttl=64 time=0.104 ms
64 bytes from 192.168.1.51: icmp_seq=0 ttl=64 time=2.058 ms (DUP!)
64 bytes from 192.168.1.151: icmp_seq=0 ttl=64 time=2.135 ms (DUP!)
...
(Añadir una opción -b
en Linux)
nota: es posible que deba agregar un "-b" allí según la versión/plataforma –
Además, no todos los sistemas operativos responderán a un ping de difusión (por defecto). –
En IPv6 use "ff02 :: 1". – Keltia
En Bash shell:
#!/bin/sh
COUNTER=1
while [ $COUNTER -lt 254 ]
do
ping 192.168.1.$COUNTER -c 1
COUNTER=$(($COUNTER + 1))
done
es posible que desee agregar una opción "-c 1" al comando ping allí ... –
bajo Linux, creo que de ping -b 192.168.1.255 funcionará (192.168.1.255 es la dirección de difusión para 192.168.1. *) sin embargo IIRC que no funciona en Windows.
La línea de comando nmap utilidad puede hacer esto también:
nmap -sP 192.168.1.*
No todas las máquinas tienen nmap
disponibles, pero es una herramienta maravillosa para cualquier descubrimiento de red, y sin duda mejor que la iteración a través ping
comandos independientes.
$ nmap -n -sP 10.0.0.0/24 Starting Nmap 4.20 (http://insecure.org) at 2009-02-02 07:41 CST Host 10.0.0.1 appears to be up. Host 10.0.0.10 appears to be up. Host 10.0.0.104 appears to be up. Host 10.0.0.124 appears to be up. Host 10.0.0.125 appears to be up. Host 10.0.0.129 appears to be up. Nmap finished: 256 IP addresses (6 hosts up) scanned in 2.365 seconds
La mejor respuesta hasta la fecha porque es la primera en ser compatible con la realidad de que no todas las subredes son del mismo tamaño y usan el/La notación 24 se puede generalizar a cualquier subred de cualquier tamaño. –
Esta es la mejor respuesta que la excepción porque es más flexible y se ajusta a diferentes redes. – charmoniumQ
Esto realmente debería ser la respuesta aceptada. Es más limpio y mucho más flexible. – Routhinator
#!/bin/sh
COUNTER=$1
while [ $COUNTER -lt 254 ]
do
echo $COUNTER
ping -c 1 192.168.1.$COUNTER | grep 'ms'
COUNTER=$(($COUNTER + 1))
done
#specify start number like this: ./ping.sh 1
#then run another few instances to cover more ground
#aka one at 1, another at 100, another at 200
#this just finds addresses quicker. will only print ttl info when an address resolves
FOR /L %i in (1,1,254) DO PING 192.168.1.%i -n 1 -w 100 | for /f "tokens=3 delims=: " %j in ('find /i "TTL="') do echo %j>>IPsOnline.txt
Esta es una modificación del @ David-Rodríguez-dribeas respuesta anterior, que funciona todos los pings en paralelo (mucho más rápido) y sólo muestra la salida para las direcciones IP que devuelven el ping .
export COUNTER=1
while [ $COUNTER -lt 255 ]
do
ping $1$COUNTER -c 1 -w 400 | grep -B 1 "Lost = 0" &
COUNTER=$(($COUNTER + 1))
done
for i in $(seq 1 254); do ping -c1 192.168.11.$i; done
Me acaba de llegar en torno a esta cuestión, pero las respuestas no me satisfacía. Así Rodé mi propia:
echo $(seq 254) | xargs -P255 -I% -d" " ping -W 1 -c 1 192.168.0.% | grep -E "[0-1].*?:"
-W 1
"). Por lo que finalizará en 1s :)64 bytes from 192.168.0.16: icmp_seq=1 ttl=64 time=0.019 ms 64 bytes from 192.168.0.12: icmp_seq=1 ttl=64 time=1.78 ms 64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=2.43 ms 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.97 ms 64 bytes from 192.168.0.11: icmp_seq=1 ttl=64 time=619 ms
Editar: Y aquí es la misma que la escritura, para cuando sus xargs no tienen la bandera -P, como es el caso en openwrt (i acabo de enterar)
for i in $(seq 255);
do
ping -W 1 -c 1 10.0.0.$i | grep 'from' &
done
for i in $(seq 1 254); do ping -c1 -t 1 192.168.11.$i; done
Agregar un -t 1
espera solo un segundo antes de salir. Esto mejora mucho la velocidad si solo tiene unos pocos dispositivos conectados a esa subred.
Excelente. 1) Es nativo 2) No tengo que instalar todas esas herramientas de mierda en Arduino. – YumYumYum
Llegué tarde pero aquí hay un pequeño script que hice para este propósito que ejecuto en Windows PowerShell. Debería poder copiarlo y pegarlo en el ISE. Esto ejecutará el comando arp y guardará los resultados en un archivo .txt y lo abrirá en el bloc de notas.
# Declare Variables
$MyIpAddress
$MyIpAddressLast
# Declare Variable And Get User Inputs
$IpFirstThree=Read-Host 'What is the first three octects of you IP addresses please include the last period?'
$IpStart=Read-Host 'Which IP Address do you want to start with? Include NO periods.'
$IpEnd=Read-Host 'Which IP Address do you want to end with? Include NO periods.'
$SaveMyFilePath=Read-Host 'Enter the file path and name you want for the text file results.'
$PingTries=Read-Host 'Enter the number of times you want to try pinging each address.'
#Run from start ip and ping
#Run the arp -a and output the results to a text file
#Then launch notepad and open the results file
Foreach($MyIpAddressLast in $IpStart..$IpEnd)
{$MyIpAddress=$IpFirstThree+$MyIpAddressLast
Test-Connection -computername $MyIpAddress -Count $PingTries}
arp -a | Out-File $SaveMyFilePath
notepad.exe $SaveMyFilePath
'for i in $ (seq 1 254); hacer ping -c1 -t 1 192.168.11. $ i; done' - es nativo, sin herramientas de terceros. – YumYumYum