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百度和谷歌的輸出結果:

wKioL1bRtaTCZlrTAADROXSsn0c035.png


左邊爲百度,右邊爲谷歌。經過了移動的CDN解析,谷歌最後經過了電信的CDN

wKioL1bRtNji_PeZAAn5klX5uWU920.png



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章