给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的话,不妨试试这个程序,其他无线路由的原理相同,但需要略为修改:
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
posted @ 2007-06-25 20:43  丁丁  阅读(1695)  评论(2编辑  收藏  举报