我希望能够在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")))
或者您可以使用tcp版本
from scapy.all import * target = ["192.168.1.254"] result, unans = traceroute(target,maxttl=32)
请注意,您必须以root身份运行scapy才能执行这些任务,否则您将获得:
socket.error: [Errno 1] Operation not permitted