如何一次ping 192.168.0.1
-192.168.0.254
?尝试使脚本运行得更快,因为它需要几分钟才能完成。在
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!'
无需等待循环中的每个进程完成,您可以一次启动所有进程并将其保存在列表中:
然后,您可以等待每个进程完成并打印结果:
^{pr2}$或者你可以用一次ping到子网广播地址来ping它们。因此,如果您的子网是
255.255.255.0
(也称为/24
),那么只需ping192.168.0.255
和通常每个人都会ping回来。在看看你用来得到回应的方法:
最重要的是,末尾的
.wait()
表示程序将等待进程完成。在通过将Popen(而不是wait)的结果放入一个列表中,您可以一次启动255个进程(尽管为了正常起见,您可能需要启动较小的块):
^{pr2}$然后,您可以完成每一个流程,直到它们完成:
相关问题 更多 >
编程相关推荐