Python小程序: ServerInformation

监听一个端口,提供HTTP接口,通过访问Web地址,调用程序获取各种信息。

例如,想在远程服务器上执行free命令查看远程服务器的内存使用情况,

free -m 的base64编码为 ZnJlZSAtbQ==,则访问下面的地址:

http://xiaoxia.org:10000/ZnJlZSAtbQ==

提交之后返回类似于下面的结果,

             total       used       free     shared    buffers     cached
Mem:           118        114          4          0          3         36
-/+ buffers/cache:         74         44
Swap:          255         56        199

为了安全使用,在CommandList文本文件里保存着一个命令列表,即可以允许调用的程序。

ps aux
free -m
netstat -na
cat /proc/meminfo
cat /proc/cpuinfo

继续阅读

均衡一下负载,把mysql移到了另外一个vps

博客的vps,因为运行太多的应用,包括mysql、php-cgi、webserver、ftpd、pptpd、fox3、smtpd等,物理内存使用早已经超过总内存128MB,swap也用了50多MB,所以出现了访问网页经常因为IO读写而卡一会儿的问题。

前几天,在EMSVPS上申请了一个35元的,跟我现在博客服务器用的配置基本相同的vps。就是这个价钱太小了,还是xen vps,让我担心会不会经常出问题,所以先用一段时间,目前用作负载均衡,分担了内存占用大,运行又慢的mysql服务器。

主服务器上的内存使用状况:

http://xiaoxia.org:10000/ZnJlZSAtbQ==

辅服务器上的内存使用状况:

http://xsign.org:10000/ZnJlZSAtbQ==

继续阅读

浅谈某些网页验证码以及绕过验证

平时上网纵观各式各样的验证码,能起到识别人为操作,避免机器人作用的不到半数。

此前,我已经写过一篇关于验证码识别的文章《无聊入门一下传说中的验证码识别技术》

很多很多验证码都是很水的。他们能起的作用是,

1. 加这个验证码是让查的人不那么急,流量不那么拥挤 (wf同学认为)

2. 加这个验证码的目的可能是让用户有机会停下来确认输入的数据是否正确 (44670同学)

 

案例一

首先,看看广东教育考试院首页的登录验证嘛,我到浏览器是firefox!

我擦,这是什么验证码,居然还分两行显示,教育部门都这么先进了吗?

继续阅读

Linux,Windows双系统休眠功能差点把NTFS上的文件弄丢了

笔记本上有两个操作系统,
1、Kubuntu 11.04
2、Windows7 64

本本上的win7除了用来剪辑视频和玩游戏以外基本上没有其他用途。系统安装上去之后只装了一个显卡驱动以及一些多媒体工具,没有网卡驱动,蓝牙驱动等,不能上网。
Kubuntu是最常使用的系统,每天都在用,上网、编程、多媒体影音、办公、图片处理等。

前几天启动过一次windows,无意在关机的时候错按了休眠。
昨天拍了一些视频素材,正好今天晚上又在kubuntu里关机的时候错选了休眠。

这下子两个系统都进入了休眠状态,刚想进入windows转换一下视频格式。从硬盘中恢复windows,打开文件夹后我就惊呆了,原来存放视频的10G文件夹竟然是空的!!!竟然是空的!!!
继续阅读

节约网络流量的方案和NetworkMonitor提示小程序

Firefox安装节省流量方案的插件:

Adblock: 拦截网页广告的下载
Flashblock: 拦截Flash自动下载播放 ,通过鼠标点击来下载播放Flash程序。
ImgLikeOpera: 拦截图片的自动下载显示,通过鼠标点击来加载需要下载显示的图片。

NetworkMonitor小程序:

随时查看使用流量:

当使用超过1MB流量时,显示警告信息:

继续阅读

Ubuntu下使用E261接入wcdma的3gnet

两张手机卡的2g上网流量都差不多被我用完了,两张卡的上网套餐加起来30元,流量加起来220MB,贵的要命,不过要上网没办法。本地搜到的一个wifi用WPA2加密不会破解撑网。前些天雨天路过一间小小的联通营业厅,看到有36元的800MB本地流量套餐,心动了就决定办一个,用超了流量1毛钱1MB总比GPRS的1块钱1MB好。中午在营业厅里,技术人员在我笔记本的Win7系统上测试,插上华为E261的3g modem,装了一堆驱动程序和一个联通的网络拨号软件,跑起来占CPU和内存异常的高。不过,看到能够打开网页了,速度挺乐观的,还真叫人开心。不过那个流量实在是跑得太快了,打开某门户网站的页面就去了几MB。

回去自己在Ubuntu上试试,按照网上的说法,应该要安装一个usb-modeswitch,然后写个配置文件。但实际操作却大吃一惊,刚把E261插进电脑,就识别出GSM Modem了,然后网络连接里多了一个新建GSM连接的选项。


继续阅读

Python可变参数与标准输出的重定位

使用Python的内置函数print支持可变参数,也就是说,print的调用参数是不固定的。例如:

# 一个参数
print "Hello China!"
# 两个参数
print "Your name is", name
# 三个参数
print "The number of", what, "is", count, "!"

在Python里使用*和**来设置可变参数,它们的区别是*传递一个参数列表(准确来说是参数元组),**传递一个参数字典。二者可以同时混合使用。

>>> def printArgs(*argList, **argDict):
...     print "argList =", argList, ", argDict =", argDict
... 
>>> printArgs("The end of the world is", 2012, lastMan = "Xiaoxia")
argList = ('The end of the world is', 2012) , argDict = {'lastMan': 'Xiaoxia'}

下面举一个例子来模仿print的实现,
继续阅读