我找不到任何关于python和网络的好的易学文档。在本例中,我只是想创建一个简单的脚本,我可以ping多台远程机器。
for ping in range(1,10):
ip="127.0.0."+str(ping)
os.system("ping -c 3 %s" % ip)
像这样一个简单的脚本可以很好地ping机器,但我想让脚本返回'active‘'no response’,这让我认为我也必须查找time模块,我认为是time.sleep(5)
,在那之后会有一个break语句。这让我觉得在for内部应该有一个while循环。我不能百分之百确定,我可能完全走错了方向:/如果有人能帮助我或为我指出一些文档的方向,那就太好了。
发布于 2012-08-24 07:21:56
试试subprocess.call
。它保存所用程序的返回值。
根据我的ping手册,成功时返回0,发送ping但未收到回复时返回2,任何其他值表示错误。
# typo error in import
import subprocess
for ping in range(1,10):
address = "127.0.0." + str(ping)
res = subprocess.call(['ping', '-c', '3', address])
if res == 0:
print "ping to", address, "OK"
elif res == 2:
print "no response from", address
else:
print "ping to", address, "failed!"
发布于 2013-09-24 04:27:02
非常感谢你这么做。我对它进行了修改,使其可以与Windows配合使用。我还设置了一个低超时,因此,没有返回的IP将不会坐下来等待每个5秒。这是来自hochl的源代码。
import subprocess
import os
with open(os.devnull, "wb") as limbo:
for n in xrange(200, 240):
ip="10.2.7.{0}".format(n)
result=subprocess.Popen(["ping", "-n", "1", "-w", "200", ip],
stdout=limbo, stderr=limbo).wait()
if result:
print ip, "inactive"
else:
print ip, "active"
只需更改方案的ip=和主机的xrange即可。
发布于 2016-01-17 00:53:36
我是一个初学者,写了一个脚本来ping多个hosts.To ping多个主机,你可以使用I地址模块。
import ipaddress
from subprocess import Popen, PIPE
net4 = ipaddress.ip_network('192.168.2.0/24')
for x in net4.hosts():
x = str(x)
hostup = Popen(["ping", "-c1", x], stdout=PIPE)
output = hostup.communicate()[0]
val1 = hostup.returncode
if val1 == 0:
print(x, "is pinging")
else:
print(x, "is not responding")
https://stackoverflow.com/questions/12101239
复制相似问题