Szybkie przeciąganie w Pythonie
Tak, próbuję uzyskać podobne wyniki za pomocą Pythona, jak robię to ze skryptem bash.
Kod skryptu bash:
#!/bin/bash
for ip in $(seq 1 254); do
ping -c 1 10.10.10.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
done
Chciałbym uzyskać takie same wyniki z podobną prędkością. Problem z każdą wersją skryptu Pythona polega na tym, że ukończenie go zajmuje bardzo dużo czasu w porównaniu z kilkoma sekundami, które zajmuje skrypt wsadowy.
Plik wsadowy zajmuje około 2 sekund, aby zamienić sieć / 24, podczas gdy najlepsze, co mogę uzyskać za pomocą skryptu Pythona, to około 5-8 minut.
Najnowsza wersja skryptu Pythona:
import subprocess
cmdping = "ping -c1 10.10.10."
for x in range (2,255):
p = subprocess.Popen(cmdping+str(x), shell=True, stderr=subprocess.PIPE)
while True:
out = p.stderr.read(1)
if out == '' and p.poll() != None:
break
if out != '':
sys.stdout.write(out)
sys.stdout.flush()
W Pythonie wypróbowałem kilka różnych sposobów, ale nie mogę zbliżyć się do prędkości skryptu basha.
Jakieś sugestie?