如何使用本机python执行ping或traceroute?

Dav*_*gac 6 python ping traceroute

我希望能够在Python中执行ping和traceroute而无需执行相应的shell命令,因此我更喜欢本机python解决方案.

And*_*nda 8

如果您不介意使用外部模块而不使用UDP或TCP,scapy是一个简单的解决方案:

from scapy.all import *
target = ["192.168.1.254"]
result, unans = traceroute(target,l4=UDP(sport=RandShort())/DNS(qd=DNSQR(qname="www.google.com")))
Run Code Online (Sandbox Code Playgroud)

或者您可以使用tcp版本

from scapy.all import *
target = ["192.168.1.254"]
result, unans = traceroute(target,maxttl=32)
Run Code Online (Sandbox Code Playgroud)

请注意,您必须以root身份运行scapy才能执行这些任务,否则您将获得:

socket.error: [Errno 1] Operation not permitted
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 3

出于安全原因,以 root 身份运行解释器通常会受到反对(当然,您确实需要具有 root 权限才能访问 ping 和 Traceroute 的 ICMP 规范所需的“原始”套接字!),但如果您对此没有任何问题这并不难——例如,这篇文章(死了?)或这篇文章给出了一个可行的 ping,而 Jeremy Hylton 的旧页面仍然有可用的 ICMP 底层代码(ping 和traceroute),尽管它是为非常旧的 Python 版本和需求编写的稍微改头换面,与现代的闪闪发光——但是,这些概念都在那里,在我给你的两个网址中!

  • 两个链接现在都给出 404,使得这个链接只能回答无用。 (6认同)
  • 完全可以在没有原始套接字或 ICMP 的情况下使用 UDP 数据包进行 ping 和跟踪路由。许多工具都可以做到这一点。 (3认同)