gpt4 book ai didi

python - 如何在 python 中执行 ping 或 traceroute,访问生成的输出?

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:51 27 4
gpt4 key购买 nike

早些时候,我问过这个问题:

How can I perform a ping or traceroute using native python?

然而,由于 python 没有以 root 身份运行,它无法打开在 native python 中执行 ping/traceroute 所需的原始 ICMP 套接字。

这让我回到使用系统的 ping/traceroute shell 命令。这个问题有几个使用 subprocess 模块的例子,它们似乎运行良好:

Ping a site in Python?

不过我还有一个要求:我需要能够访问生成的输出(例如,对于长时间运行的跟踪路由。)

上面的示例都运行 shell 命令,然后仅在命令完成后才允许您访问完整的输出。有没有办法在生成命令输出时访问它?

编辑:根据 Alex Martelli 的回答,以下是有效的方法:

import pexpect

child = pexpect.spawn('ping -c 5 www.google.com')

while 1:
line = child.readline()
if not line: break
print line,

最佳答案

pexpect对于像您这样的任何要求,“默认情况下”是我要达到的目标——还有其他类似的模块,但 pexpect 几乎总是最丰富、最稳定和最成熟的模块。我会费心寻找替代方案的一种情况是,如果我也必须在 Windows 下正确运行(无论如何 ping 和 traceroute 可能有它们自己的问题)——如果您是这种情况,请告诉我们,我们会看看能安排什么!-)

关于python - 如何在 python 中执行 ping 或 traceroute,访问生成的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com