#coding=utf-8
import sys
import os
import re
import urllib
import subprocess

def getlocation(ip):
   result = urllib.urlopen("http://www.ip138.com/ips.asp?ip=%s&action=2" % ip)
  res = result.readlines()
  result.close()
  for i in res:
    if re.match(".*ul class=\"ul1\".*",i):
      ipblock=i
  if 'ipblock' in dir():
    add1 = ipblock.split("<")[3].split(">")[1].decode('gb2312')[6:].encode('utf8')
    add2 = ipblock.split("<")[5].split(">")[1].decode('gb2312')[6:].encode('utf8')
    if add1 == add2:
      return "\t\t\t"+add1
    else:
      return "\t\t\t"+add1+"\tOR\t"+add2

if len(sys.argv) < 2:
  print "Usage: %s {hostname|ip}" % sys.argv[0]
  sys.exit()
else:
  host = sys.argv[1]

try:
  p = subprocess.Popen(['tracert',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()

执行方法,到目录下 tracert.py www.baidu.com

IP 跟踪的更多相关文章

  1. asp.net客户端IP跟踪

    /// <summary> /// 获取客户端IP地址(无视代理) /// </summary> /// <returns>若失败则返回回送地址</retur ...

  2. NAT(Network Address Translation)

    一.概述 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, I ...

  3. 第11章 拾遗1:网络地址转换(NAT)和端口映射

    1. 网络地址转换(NAT) 1.1 NAT的应用场景 (1)应用场景:允许将私有IP地址映射到公网地址,以减缓IP地址空间的消耗 ①需要连接Internet,但主机没有公网IP地址 ②更换了一个新的 ...

  4. 转 NAT技术详解

    NAT产生背景 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联网发布信息,传递资料和 ...

  5. NAT技术详解

    一.IPv4协议和NAT的由来 1.IPv4协议介绍 2011年2月3日,IANA宣布:IPv4地址空间最后5个地址块已经被分配给下属的5个地区委员会.2011年4月15日,亚太区委员会APNIC对外 ...

  6. NAT(地址转换技术)学习

    一.什么是NAT,NAT产生的背景 NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力. NAT产生的背景是为了解决IPv4地址不足的 ...

  7. NAT(地址转换技术)详解

    目录 NAT产生背景ip地址基础知识NAT技术的工作原理和特点静态NAT动态NATNAT重载(经常应用到实际中)NAT技术的优缺点优点缺点NAT穿越技术应用层网关(ALG)ALG的实际应用NAT技术的 ...

  8. Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径。

    Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径.   Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其 ...

  9. Linux 从网卡到TCP IP协议栈数据流跟踪与审计

    前沿 在学代码审计,然后最近做Linux协议栈的审计,发现Linux不愧是一个久经考验的系统,本来以为可以找到个DoS的,结果发现其在TCP/IP协议栈的链路层实现,利用了各种技术,用来提高性能与安全 ...

随机推荐

  1. Chrome浏览器Json查看插件JsonHandle下载以及无法安装插件的解决方法

    场景 在使用Chrome浏览器查看Json数据时如果没有插件会挤作一团. 安装JsonHandle插件后 博客: https://blog.csdn.net/badao_liumang_qizhi 关 ...

  2. npm命令集合

    1.npm初始化项目:npm init 或者 npm init --yes 生产 package.json文件 2.下载package.json安装包: npm install 缩写 npm i

  3. Java 方法引用_特性

    JAVA8 方法引用:(四种方法引用的使用) 对象引用的特点:不同的对象可以操作同一块的内容:而方法引用就是指为一个方法设置别名,相当于一个方法定义了不同的名字. 引用静态方法: 类名称 :: sta ...

  4. oracle SSL 配置

    可以参考metalink号:762286.1 End To End Examples of using SSL With Oracle's JDBC THIN Driver   ======   大致 ...

  5. Python—实现sftp客户端(连接远程服务器)

    使用SFTP上传与下载文件方式一: import paramiko transport = paramiko.Transport(("106.15.88.182", 22)) # ...

  6. 【BZOJ1443】[JSOI2009]游戏Game(二分图+博弈)

    BZOJ 题意: 给出一个\(n*m\)的网格,其中有一些障碍点. 现在两个人玩游戏,首先先手选定一个点,然后从后手开始轮流移动,不能移动者即输掉这次游戏. 规定不能移动到那些之前已经到过的格子上. ...

  7. centos7下关闭防火墙

    查看防火墙:systemctl status firewalld.service 关闭防火墙:systemctl stop firewalld.service 以上方式是暂时的,重启系统则防火墙仍然开 ...

  8. django update_or_create

    update_or_create question.votes.update_or_create(user=request.user, defaults={"value": val ...

  9. aiomysql

    aiomysql: import aiomysql import asyncio async def aiomysql_test(): loop = asyncio.get_event_loop() ...

  10. 线程休眠sleep

    一.sleep的作用 sleep() 定义在Thread.java中.sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”.sleep()会指定休眠时间,线程休 ...