kui*_*per 18 python networking ping
我无法在python和网络上找到任何好的易学文档.在这个例子中,我只是想创建一个简单的脚本,我可以ping许多远程机器.
for ping in range(1,10):
ip="127.0.0."+str(ping)
os.system("ping -c 3 %s" % ip)
Run Code Online (Sandbox Code Playgroud)
像这样的简单脚本可以很好地ping机器,但是我想让脚本返回'active''没有响应'这让我觉得我也必须查找时间模块,我想time.sleep(5)和之后那会有一个休息声明.这让我觉得里面应该有一个while循环.我不是百分百肯定,我可能会完全朝着错误的方向前进:/如果有人可以提供帮助,或者指向一些非常棒的文档.
Rol*_*ith 26
试试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!"
Run Code Online (Sandbox Code Playgroud)
hoc*_*chl 10
这个脚本:
import subprocess
import os
with open(os.devnull, "wb") as limbo:
for n in xrange(1, 10):
ip="192.168.0.{0}".format(n)
result=subprocess.Popen(["ping", "-c", "1", "-n", "-W", "2", ip],
stdout=limbo, stderr=limbo).wait()
if result:
print ip, "inactive"
else:
print ip, "active"
Run Code Online (Sandbox Code Playgroud)
会产生类似这样的输出:
192.168.0.1 active
192.168.0.2 active
192.168.0.3 inactive
192.168.0.4 inactive
192.168.0.5 inactive
192.168.0.6 inactive
192.168.0.7 active
192.168.0.8 inactive
192.168.0.9 inactive
Run Code Online (Sandbox Code Playgroud)
如果更换您可以捕获输出limbo与subprocess.PIPE和使用communicate()上的Popen对象:
p=Popen( ... )
output=p.communicate()
result=p.wait()
Run Code Online (Sandbox Code Playgroud)
这样您就可以获得命令的返回值并捕获文本.如果您需要灵活性,请遵循本手册,这是操作子流程的首选方法:
此模块中的基础流程创建和管理由Popen类处理.它提供了很大的灵活性,因此开发人员能够处理便利功能未涵盖的不太常见的情况.
小智 5
非常感谢你做的这些.我已将其修改为与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"
Run Code Online (Sandbox Code Playgroud)
只需更改您的方案的ip =和主机的xrange.
| 归档时间: |
|
| 查看次数: |
97777 次 |
| 最近记录: |