Wie kann ich ping 192.168.0.1
- 192.168.0.254
auf einmal? Der Versuch, das Skript schneller laufen zu lassen, dauert einige Minuten.Senden mehrerer Pings mit Python
import os
import subprocess
ip = raw_input("IP Address? ")
print "Scanning IP Address: " + ip
subnet = ip.split(".")
FNULL = open(os.devnull, 'w')
for x in range(1, 255):
ip2 = subnet[0]+"."+ subnet[1] +"."+ subnet[2] +"."+ str(x)
response=subprocess.Popen(["ping", "-c", "1", "-n", "-W", "2", ip2], stdout=FNULL, stderr=subprocess.STDOUT).wait()
if response == 0:
print ip2, 'is up!'
else:
print ip2, 'is down!'
Schauen Sie in 'Multiprocessing' Modul' Pool'. – jacob
@jacob ist nicht der Pool für Multiprocessing, wenn Sie eine Reihe von Python-Prozessen starten und koordinieren möchten? Der Code startet bereits Prozesse (was Popen tut), also würden Sie nur Prozesse starten, um Prozesse zu starten, was sehr schnell interessant werden würde. – Pyonsuke
@Pyonsuke Ja; aber er rief jedes Mal "warten" auf den Prozess. Mit 'multiprocessing' können Sie für jeden' subprocess.Popen' einen Prozess starten und jeder kann seinen 'wait' haben. Ich sage nicht, dass es optimal ist, aber es war das Erste, was mir in den Sinn kam. – jacob