it-swarm.com.de

Senden Sie einen Ping an jede IP in einem Subnetz

Gibt es eine Befehlszeilenmethode, um Pings an jeden Computer in einem Subnetz zu senden? .__

for(int i = 1; i < 254; i++)
    ping(192.168.1.i);

um arp-auflösung durchzusetzen?

42
Max Ried

Ich würde die Verwendung von fping mit der Maskenoption vorschlagen, da Sie sich beim Ping nicht einschränken.

fping -g 192.168.1.0/24

Die Antwort lässt sich leicht in einem Skript analysieren:

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
...

Hinweis: Wenn Sie das Argument -a verwenden, wird die Ausgabe auf erreichbare IP-Adressen beschränkt. Möglicherweise möchten Sie es verwenden.

fping -a -g 192.168.1.0/24

Von mann:

fping unterscheidet sich von ping dadurch, dass Sie beliebig viele Ziele angeben können Geben Sie in der Befehlszeile eine Datei ein oder geben Sie eine Datei an, die die Ziellisten enthält ping. Anstatt an ein Ziel zu senden, bis es abläuft oder Antworten, fping sendet ein Ping-Paket und fährt mit dem nächsten .__ fort. Ziel in einem Round-Robin-Modus.

Weitere Informationen: http://fping.org/

38
Kyr

Nicht alle Maschinen verfügen über nmap, aber es ist ein wunderbares Werkzeug für jede Netzwerkerkennung und sicherlich besser als das Durchlaufen unabhängiger ping-Befehle.

nmap -n -sP 10.0.0.0/24Starten von Nmap 4.20 (http://insecure.org) um 2009-02-02 07:41 CST
Host 10.0.0.1 scheint gestartet zu sein .
 Host 10.0. 0.10 scheint zu sein 
 Host 10.0.0.104 scheint zu sein 
 Host 10.0.0.124 scheint zu sein 
 Host 10.0.0.125 scheint zu sein 
 Host 10.0.0.129 wird angezeigt up up .
 Nmap beendet: 256 IP-Adressen (6 Hosts aufwärts) wurden in 2.365 Sekunden gescannt 
98
Tom

Broadcast-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!)
...

(Fügen Sie unter Linux eine Option -b hinzu.)

38
Ryan McGeary

In Bash Shell:

#!/bin/sh

COUNTER=1

while [ $COUNTER -lt 254 ]
do
   ping 192.168.1.$COUNTER -c 1
   COUNTER=$(( $COUNTER + 1 ))
done

Das Befehlszeilenhilfsprogramm nmap kann dies auch:

nmap -sP 192.168.1.*
9

Ich bin gerade um diese Frage herumgekommen, aber die Antworten haben mich nicht befriedigt.

echo $(seq 254) | xargs -P255 -I% -d" " ping -W 1 -c 1 192.168.0.% | grep -E "[0-1].*?:"
  • Vorteil 1: Sie müssen kein zusätzliches Werkzeug installieren
  • Vorteil 2: Es ist schnell. Es macht alles parallel mit einem Zeitlimit für jeden Ping von 1s ("-W 1"). So wird es in 1s enden :)
  • Vorteil 3: Die Ausgabe ist so
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

Edit: Und hier ist das gleiche wie bei script, denn wenn Ihre Xargs nicht das Flag -P haben, wie es bei openwrt der Fall ist (habe ich gerade herausgefunden)

for i in $(seq 255);
do
 ping -W 1 -c 1 10.0.0.$i | grep 'from' &
done
7
zabeltech

Dies ist eine Modifikation der Antwort von @ david-rodríguez-dribeas, die alle Pings parallel ausführt (viel schneller) und nur die Ausgabe für IP-Adressen zeigt, die den Ping zurückgeben.

export COUNTER=1
while [ $COUNTER -lt 255 ]
do
    ping $1$COUNTER -c 1 -w 400 | grep -B 1 "Lost = 0" &
    COUNTER=$(( $COUNTER + 1 ))
done
6
Adam Brown
for i in $(seq 1 254); do ping -c1 -t 1 192.168.11.$i; done

Das Hinzufügen eines -t 1 wartet nur eine Sekunde vor dem Beenden. Dies verbessert die Geschwindigkeit erheblich, wenn nur wenige Geräte mit diesem Subnetz verbunden sind.

5
JKalok
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
4
PCFixerGuy

Unter Linux denke ich, dass Ping -b 192.168.1.255 funktionieren wird (192.168.1.255 ist die Broadcast-Adresse für 192.168.1. *), Aber IIRC, das unter Windows nicht funktioniert.

2
Axelle Ziegler

Prüfen Sie, ob dieser Blogbeitrag was Sie brauchen.

1
Ólafur Waage
#!/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
0

Ich kam zu spät, aber hier ist ein kleines Skript, das ich für diesen Zweck erstellt und in Windows PowerShell ausgeführt habe. Sie sollten es in der Lage sein, es zu kopieren und in die ISE einzufügen. Daraufhin wird der Befehl arp ausgeführt, die Ergebnisse in einer TXT-Datei gespeichert und in Notepad geöffnet.

# 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
0
cxp cxd