如何使用原生Python执行ping或traceroute?
我想在Python里面直接进行ping和traceroute操作,而不想去执行那些相应的命令行指令,所以我更希望能有一个原生的Python解决方案。
7 个回答
3
Webb库非常方便,可以用来进行各种与网络相关的数据提取...而且通过它可以轻松进行ping和traceroute操作。只需要输入你想要进行traceroute的URL:
import webb
webb.traceroute("your-web-page-url")
如果你想把traceroute的日志自动保存到一个文本文件中,可以使用以下命令:
webb.traceroute("your-web-page-url",'file-name.txt')
同样,你也可以通过以下代码获取一个URL(服务器)的IP地址:
print(webb.get_ip("your-web-page-url"))
希望这对你有帮助!
13
如果你不介意使用外部模块,并且不想用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)
请注意,你需要以管理员身份运行scapy,才能执行这些任务,否则你会遇到:
socket.error: [Errno 1] Operation not permitted