需要先安装两个包
[root@localhost ~]# yum install graphviz // 为了使用dot命令
[root@localhost ~]# yum install ImageMagick // 为了使用/usr/bin/convert命令
python脚本代码如下
#!/usr/bin/evn python
#-*-coding:utf-8 -*-
import os,sys,time,subprocess
import warnings,logging
from scapy.all import traceroute
from scapy.as_resolvers import AS_resolver_radb
warnings.filterwarnings("ignore", category=DeprecationWarning)
logging.getLogger("scapy.runtine").setLevel(logging.ERROR)
domains = raw_input('please input the domain or IP what you want: ')
target = domains.split(" ")
dport = [80, 21]
if len(target) >= 1 and target[0] != '':
# 启动路由跟踪
res, unans = traceroute(target, dport=dport, retry=-2)
# traceroute 生成的信息绘制成svg
# res.graph(target="> graph.svg")
res.graph(target="> graph.svg", ASres=AS_resolver_radb(), type="svg")
time.sleep(2)
# svg 转格式为 png
subprocess.Popen("/usr/bin/convert graph.svg graph.png", shell=True)
else:
print("IP/domain number of errors, exit")
注意:traceroute程序都需要root来运行。traceroute函数可以传入以列表格式的多个域名/IP,和多个端口(这里有80和21)。