Dav*_*gac 6 python ping traceroute
我希望能够在Python中执行ping和traceroute而无需执行相应的shell命令,因此我更喜欢本机python解决方案.
如果您不介意使用外部模块而不使用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)
出于安全原因,以 root 身份运行解释器通常会受到反对(当然,您确实需要具有 root 权限才能访问 ping 和 Traceroute 的 ICMP 规范所需的“原始”套接字!),但如果您对此没有任何问题这并不难——例如,这篇文章(死了?)或这篇文章给出了一个可行的 ping,而 Jeremy Hylton 的旧页面仍然有可用的 ICMP 底层代码(ping 和traceroute),尽管它是为非常旧的 Python 版本和需求编写的稍微改头换面,与现代的闪闪发光——但是,这些概念都在那里,在我给你的两个网址中!