python版trace命令显示归属地
2015-07-08 11:22
525 查看
无论是windows还是linux系统的traceroute命令都不能显示归属地,在实际的网络维护中,这些追踪路由的归属地址也是很重要的信息,来帮助我们定位问题发生的地方。以下为python写的一个脚本来显示归属地。也方便自己的记忆和日后的使用。
本文出自 “技术为王” 博客,谢绝转载!
#!/usr/bin/python import sys import os import re import urllib2 import subprocess import platform def getlocation(ipaddr): url = "http://www.ip138.com/ips138.asp?ip=%s&action=2" % ipaddr u = urllib2.urlopen(url) s = u.read() #Get IP Address ip = re.findall(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',s) #Get IP Address Location result = re.findall(r'(<li>.*?</li>)',s) location = result[0][16:-5].decode('gbk') return location if len(sys.argv) < 2: print "Usage: %s {hostname|ip}" % sys.argv[0] sys.exit() else: host = sys.argv[1] system_name = platform.dist()[0] if system_name == 'redhat': trace_cmd = '/bin/traceroute' elif system_name == 'Ubuntu': trace_cmd = '/usr/sbin/traceroute' try: p = subprocess.Popen([trace_cmd,host],stdout=subprocess.PIPE) while True: line = p.stdout.readline() if not line: break if re.match("^.[0-9].*(.*).*",line): try: ip = line.split('(')[1].split(')')[0] print line,getlocation(ip) except IndexError,e: print line, else: print line, except (KeyboardInterrupt,SystemExit): sys.exit()由于自己的网络环境在系统判断上没有加入windows,后续可以其他朋友们添加了。另外我也写了一个windows版本的。欢迎大家一起交流
本文出自 “技术为王” 博客,谢绝转载!
相关文章推荐
- Python下opencv使用笔记(三)(图像的几何变换)
- python友情链接检查方法
- 使用python发送html邮件
- eclipse中python文本字体大小设置
- python:使用OpenSSL
- Python抓取百度查询结果的方法
- python初学-01数据类型
- Python抓取淘宝下拉框关键词的方法
- Python笔记:反射(自省)指南
- Python根据区号生成手机号码的方法
- coverage.py的覆盖率统计原理
- Python笔记:线程指南
- Python:数据库操作模块SQLAlchemy
- python 之 input() vs. raw_input()
- Python中文字符问题
- Python写入CSV文件的方法
- Python笔记:re模块详解
- Python 2.7(3.x)以及numpy、matplotlib和scipy库三种方法实战安装
- python+opencv+numpy入门
- Python中*args 和**kwargs的用法