给Asus WL500G Deluxe无线路由器日志文件添加IP地址地理位置信息的Python小程序
Python在不温不火的发展了10年后,突然火起来了,原因是蟒父Guido van Rossum加入了google,而google又迫切希望拥有一门可以和Sun、IBM的Java,MS的C#比肩的下一代语言,看起来python很有潜力成为这样一门语言。于是,作为独立IT爱好者,同时,也是一个非常想去google拿高工资的我,在“智廉”网上看到google招人要求后,决定好好学学python。
我学习过Perl,同Perl的格言There's More Than One Way to Do It不同,Python的格言是There should be one-- and preferably only one --obvious way to do it. 很难说哪种哲学正确,但Python的易读易用性比Perl的确好一些。
华硕的WL500GD无线路由器可以外接一个移动硬盘兼做FTP服务器,我去年10月入手一台后,在WL500GD上7x24小时一直运行FTP服务,FTP和其他服务一起,通过http://192.168.1.1/的浏览器界面可以设置管理路由器。当然也包括检查FTP的访问情况,如下图所示:
无疑这样通过浏览器访问需要多次点击,较麻烦,而且光看IP很难估计出访客来自哪里,通常还要通过http://www.ip138.com/可以查询IP地址来自哪里,剪贴复制的操作也不可少,趁着学习Python,我决定写一个漂亮点的程序,一次解决这些问题。
仔细分析一下,这个小小的Python程序还真运用了不少技术,通过urllib2模块提交IP数据并抓取结果页面,抓取需要HTTP基本验证才能访问的页面(访问路由器日志),通过sgmllib模块来分析抓取下来的html页面,取得需要的信息,通过anydbm模块缓存IP地址地理位置信息,通过正则表达式和string的一些访问处理文本……
好了,如果你恰巧也有一部华硕的WL500G的话,不妨试试这个程序,其他无线路由的原理相同,但需要略为修改:
这个程序在CPython下运行通过,对于Web浏览器界面的运行结果如下:
我学习过Perl,同Perl的格言There's More Than One Way to Do It不同,Python的格言是There should be one-- and preferably only one --obvious way to do it. 很难说哪种哲学正确,但Python的易读易用性比Perl的确好一些。
华硕的WL500GD无线路由器可以外接一个移动硬盘兼做FTP服务器,我去年10月入手一台后,在WL500GD上7x24小时一直运行FTP服务,FTP和其他服务一起,通过http://192.168.1.1/的浏览器界面可以设置管理路由器。当然也包括检查FTP的访问情况,如下图所示:
无疑这样通过浏览器访问需要多次点击,较麻烦,而且光看IP很难估计出访客来自哪里,通常还要通过http://www.ip138.com/可以查询IP地址来自哪里,剪贴复制的操作也不可少,趁着学习Python,我决定写一个漂亮点的程序,一次解决这些问题。
仔细分析一下,这个小小的Python程序还真运用了不少技术,通过urllib2模块提交IP数据并抓取结果页面,抓取需要HTTP基本验证才能访问的页面(访问路由器日志),通过sgmllib模块来分析抓取下来的html页面,取得需要的信息,通过anydbm模块缓存IP地址地理位置信息,通过正则表达式和string的一些访问处理文本……
好了,如果你恰巧也有一部华硕的WL500G的话,不妨试试这个程序,其他无线路由的原理相同,但需要略为修改:
Check_WL500GD_FTP_Log.py
这个程序在CPython下运行通过,对于Web浏览器界面的运行结果如下:
Jun 25 02:43:53 FTP server: user anonymous logged in from 219.129.83.12 广东省韶关市 电信ADSL Jun 25 02:43:53 FTP server: user anonymous logged in from 219.129.83.12 广东省韶关市 电信ADSL Jun 25 03:08:58 ntp client: time is synchronized to time.nist.gov Jun 25 05:09:04 ntp client: time is synchronized to time.nist.gov Jun 25 07:09:09 ntp client: time is synchronized to time.nist.gov Jun 25 08:48:11 FTP server: user anonymous logged in from 219.146.252.21 山东省青岛市 广电网 Jun 25 08:48:44 FTP server: user anonymous logged in from 219.146.252.21 山东省青岛市 广电网 Jun 25 08:58:28 FTP server: user anonymous quit by session timeout Jun 25 09:09:09 ntp client: time is synchronized to time.nist.gov Jun 25 09:41:20 FTP server: user anonymous logged in from 222.244.8.189 湖南省长沙市 (宁乡县)电信 Jun 25 09:41:22 FTP server: user anonymous logged in from 222.244.8.189 湖南省长沙市 (宁乡县)电信Python有趣么?嗯,Cool