python 版本traceroute和路由图片输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 版本traceroute和路由图片输出相关的知识,希望对你有一定的参考价值。

python 的traceroute功能能利用scapy模板很方便实现,并且可以输出路由图片非常直观。

这里了修改了《python自动化运维:技术与最佳实践》的代码进行说明。

#!/usr/bin/evn python
#-*-coding:utf-8 -*-
import time
import logging,warnings
import subprocess
import socket
# eclipse的pydev提示unresolve,但运行正常
from scapy.all import traceroute  # @UnresolvedImport
warnings.filterwarnings("ignore",category=DeprecationWarning) 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) 
domains = raw_input(‘Please input domains or IPs: ‘)
# 利用socket 解析域名的方法
# try:
#     ip = socket.gethostbyname(domains)
# except socket.error,e:
#     print "you should run by root"‘‘‘
try:
    domain = domains.split(‘ ‘)  
    res,unans = traceroute(domains,dport=[80,443],retry=-2)
    res.graph(target=">test.svg")
    time.sleep(1)
    #输出转换为png为可选,chrome,ie等可以打开.svg文件
    subprocess.Popen("/usr/bin/convert test.svg test.png",shell=True)
except:
    print "you shoud run by root or domain error"


注意:traceroute程序都需要root来运行。traceroute函数可以传入以列表格式的多个域名/IP,和多个端口(这里有80和443)

这里我给出在学校traceroute百度和谷歌的输出结果:

技术分享


左边为百度,右边为谷歌。经过了移动的CDN解析,谷歌最后经过了电信的CDN

技术分享



本文出自 “新手PS欢迎交流” 博客,请务必保留此出处http://linpeisong.blog.51cto.com/9601554/1745661

以上是关于python 版本traceroute和路由图片输出的主要内容,如果未能解决你的问题,请参考以下文章

traceroute命令初探

网络相关的命令工具研究报告-traceroute

关于路由跟踪指令---traceroute

traceroute输出分析linux - 路由器ip地址

网络相关的命令工具研究报告-traceroute

ping -R 和 traceroute的区别