2009年4月10日星期五

Mobile Broadband --- 上网本风暴接近中

在国外正在流行的无线上网本风暴,很快就要在国内登录了。
今天在某移动运营商处见到两台用来做测试的上网本,一台是Dell的,型号好象是Mini 9,另一台是方正的,没记着型号。方正的外形比较憨厚,键盘却又很娇小,敲打起来不是很舒服;而Dell的外观和手感还不错。
在两台上网本的键盘手托处都贴有一个“mobile broadband”以及运营商自己的3G标记。据说该本本卖3千多块,包括2500的预付上网费用,折算下本本只需要900元左右。

上网本本身除了都带有RJ45的有线网卡和WIFI无线网卡外,还内置了3G HSDPA高速上网卡。

2009年4月8日星期三

一輩子受用的 Regular Expressions -- 兼談另類的電腦學習態度 (更新)

一輩子受用的 Regular Expressions -- 兼談另類的電腦學習態度 是一位台湾同胞关于RE的文章,最近再次温习,发现又有更新了。

2009年3月10日星期二

收集Cisco交换机配置的小工具


前段时间做care的同事提出,在平时维护时发现以前安装调测的交换机上有很多不规范或错误的配置。这大概都是由于验收时无法去很仔细地看配置造成的。由此想到有没有一个工具可以提取交换机的配置,生成一个易读的报告?在网上用Cisco Configuration parser做keyword搜了一下,只找到一个用perl写的只能分析出交换机接口的脚本,用处不大。于是自己用Python写了一个sw_confparser,目前基本上能达到当初的目的,就差完善相关的配置模板了。

脚本上传到google code的net-mon-man项目里了,下载在这里

sw_confparser.py使用说明
sw_confparser可以将交换机的配置提取出来,导入到excel或数据库里去。
sw_confparser需要两个文件:
  1. cisco交换机的show running config命令的输出文本
  2. 以yaml格式编写的交换机配置模板。例子如下:
#more c6509.yml

Hostname:
configname: [Hostname]
pattern: hostname (.*)

hardware:
configname: [Name,description,PID,VID,SN]
pattern: |
NAME: "(.*)", DESCR: "(.*)"
PID: (.*), VID: (.*), SN: (.*)

Memory:
configname: [Free memory,Used memory]
pattern: cisco WS-C6509-E \(R7000\) processor \(revision 1.2\) with (.*)/(.*) bytes of memory

IOS Version:
configname: [IOS version]
pattern: IOS \(tm\) s3223_rp Software \(s3223_rp-IPBASEK9-M\), Version (.*), RELEASE SOFTWARE \(fc3\)

ROM version:
configname: [Rom version]
pattern: "ROM: System Bootstrap, Version (.*), RELEASE SOFTWARE"

System Image:
configname: [Image file]
pattern: System image file is "(.*)"

System Register:
configname: [Register]
pattern: Configuration register is (.*)

Timezone:
configname: [Timezone]
pattern: clock timezone (.*)

STP Mode:
configname: [STP Mode]
pattern: spanning-tree mode (.*)

Log Server:
configname: [Log Server]
pattern: logging (\d+.\d+.\d+.\d+)

Snmp Agent:
configname: [RO string, RW string, trap-source]
pattern: |
snmp-server community (\w+) RO
snmp-server community (\w+) RW
snmp-server trap-source (\w+)
SNMP Trap Server:
configname: [server address,server string]
pattern: snmp-server host (\d+.\d+.\d+.\d+) (\w+)

NTP server:
configname: [server]
pattern: ntp server (\d+.\d+.\d+.\d+)

Static Route:
configname: [dest, netmark, gateway,description]
pattern: |
ip route (\d+.\d+.\d+.\d+) (\d+.\d+.\d+.\d+) (\d+.\d+.\d+.\d+) name (.*)

将以上两个文件作为脚本的参数执行,就可以啦。如不加任何参数则会打印出帮助信息。

输出例子:
python sw_confparser.py log/dgswtest1.log c6509.yml -c

///// Parsing schema:c6509.yml...

Log Server|None
System Image|sup-bootdisk:s3223-ipbasek9-mz.122-18.SXF5.bin
ROM version|12.2(17r)SX3
IOS Version|12.2(18)SXF5
Hostname|SW301
STP Mode|pvst
NTP server|21.17.1.15
Timezone|Beijing 8
System Register|0x2102
Snmp Agent|RO string|RW string|trap-source
Static Route|dest|netmark|gateway|description
Static Route|0.0.0.0|0.0.0.0|121.17.70.136|TO_GnFW_Gn7_VRRP
Static Route|10.201.55.192|255.255.255.192|10.201.147.34|TO_GZOSS
Static Route|10.201.57.64|255.255.255.192|10.201.147.34|TO_GZWANGWEI
Static Route|10.201.62.0|255.255.255.0|10.201.147.34|TO_ANQUANWANGGUAN
Static Route|10.243.163.128|255.255.255.192|10.201.147.34|TO_GZOM
Static Route|10.245.107.0|255.255.255.128|10.201.147.34|TO_SZOM
Static Route|10.245.108.0|255.255.255.192|10.201.147.34|TO_DGSGSN_GA
Static Route|10.245.111.0|255.255.255.192|10.201.147.34|TO-DGLAN1_LAN2-OM
Static Route|132.119.19.0|255.255.255.0|10.201.147.34|TO_DGOM
hardware|Name|description|PID|VID|SN
hardware|WS-C6509-E|Cisco Systems Catalyst 6500 9-slot Chassis System|WS-C6509-E|V02|SMG1015NEF3
hardware|WS-C6K-VTT-E 1|VTT-E FRU 1|WS-C6K-VTT-E||SMT1008J988
hardware|WS-C6K-VTT-E 2|VTT-E FRU 2|WS-C6K-VTT-E||SMT1008A415
hardware|WS-C6K-VTT-E 3|VTT-E FRU 3|WS-C6K-VTT-E||SMT1008J807
hardware|CLK-7600 1|OSR-7600 Clock FRU 1|CLK-7600||SMT1005B110
hardware|CLK-7600 2|OSR-7600 Clock FRU 2|CLK-7600||SMT1005B110
hardware|1|WS-X6148A-GE-TX 48-port 10/100/1000 RJ45 EtherModule Rev. 1.6|WS-X6148A-GE-TX|V03|SAL1221RF94
hardware|2|WS-X6148-RJ-45 48-port 10/100 mb RJ45 Rev. 5.1|WS-X6148-RJ-45|V01|SAL1012H0KA
hardware|3|WS-X6148A-GE-TX 48-port 10/100/1000 RJ45 EtherModule Rev. 1.6|WS-X6148A-GE-TX|V03|SAL1221RF7G
hardware|5|WS-SUP32-GE-3B 9 ports Supervisor Engine 32 8GE Rev. 4.2|WS-SUP32-GE-3B|V02|SAL1014HYEZ
hardware|msfc sub-module of 5|WS-F6K-MSFC2A Cat6k MSFC 2A daughterboard Rev. 3.0|WS-F6K-MSFC2A||SAL1014HXYT
hardware|switching engine sub-module of 5|WS-F6K-PFC3B Policy Feature Card 3 Rev. 2.1|WS-F6K-PFC3B||SAL1013H7Q1
hardware|6|WS-SUP32-GE-3B 9 ports Supervisor Engine 32 8GE Rev. 4.2|WS-SUP32-GE-3B|V02|SAL1014J1DR
hardware|msfc sub-module of 6|WS-F6K-MSFC2A Cat6k MSFC 2A daughterboard Rev. 3.0|WS-F6K-MSFC2A||SAL1014HXXF
hardware|switching engine sub-module of 6|WS-F6K-PFC3B Policy Feature Card 3 Rev. 2.1|WS-F6K-PFC3B||SAL1014HX56
hardware|WS-C6509-E-FAN 1|Enhanced 9-slot Fan Tray 1|WS-C6509-E-FAN|V02|DCH10091210
hardware|PS 1 WS-CAC-3000W|AC power supply, 3000 watt 1|WS-CAC-3000W|V01|AZS10521F0T
hardware|PS 2 WS-CAC-3000W|AC power supply, 3000 watt 2|WS-CAC-3000W|V01|AZS10100ASN
Memory|Free memory|Used memory
Memory|227328K|34816K
SNMP Trap Server|server address|server string
这是帮助信息:
# python sw_confparser.py
Usage: sw_confparser.py logfile schema1 schema2 ... [options]

example: sw_confparser.py switch.log c6509.yml -vs

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d, --debug print the debug information
-v, --verbose output the records and table infomation
-s, --single output the single records only
-t, --table output the table records only
-c, --csv output the records with csv formation

2008年12月25日星期四

Sphinx---Python文档生成器

Sphinx 是 Python 2.6 新採用的 rst 文件生成系統. 似乎非常好用. 下面是台湾的gasolin写的几篇介绍文章.
看了一下,似乎还可以用来做网站嘛. html都不用写了...

INET6: 試玩 Sphinx 之 2

2008年12月11日星期四

Zabbix研究

最近工作上要搞一套监控系统,所以终于可以名正言顺地花时间在Nagios、Zabbix等开源监控软件上了;)

一起工作的同事原来弄过Cacti,但觉得Cacti功能不能满足我们的需要,于是建议用Nagios或Zabbix,虽然我比较prefer Nagios(两年前试过Zabbix,当时问题还是挺多,在SQLite3环境下编译都过不了),但经过在网上查资料对比,最终还是选用了Zabbix。(目前Zabbix的版本为1.6.1)

zabbix的主要优点:
1. Web前端做的非常好(Nagios的硬伤)
2. 支持分布式,与Nagios部份上下
3. Zabbix的Agent功能非常强大,与Nagios有的一拼
4. 自带多种绘图功能,不用象Nagios那样还要集成第三方发plugin,方便!(Nagios的绘图plugin有好几个,选择太多有时候也不是好事)
5. 支持将几种指标做运算的功能。Nagios也能实现,但没Zabbix那么直观
6. Trigger/Action做的比较好,能发短信、邮件。Nagios也有。
6. 还有其它一些什么Trend,等功能,暂时还用不上。

2008年10月29日星期三

抛弃Apache吧,Rock n roll with Cherokee!

今天在web2py的论坛上看到有人在介绍一个新的web server:Cherokee 稍微看了一下,似乎真的挺不错的,除了短小精悍,无需额外的软件包,支持广泛,速度快外,最突出的就是web管理界面(用python写的)了。你可以抛开复杂难懂的conf文件啦!

Why Cherokee?

Cherokee is high-performance web server. It is very fast, flexible and easy to configure. It offers support for the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, X-Sendfile, TLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly encoding, Load balancing, Apache compatible log files, zero downtime updates and much more.

It is highly efficient, extremely lightweight and provides rock solid stability. Among its many features there is one that deserves special credit: a user friendly interface called cherokee-admin that is provided for a no-hassle configuration of every single feature of the server. This administration interface allows you to configure the web server without having to worry about editing a text file written with a certain syntax.

2008年8月23日星期六

轻量级的BBS: PunBB

PunBB 是什么?

有必要先将 PunBB 简要介绍一下。在官方的文档中是这样介绍的:PunBB 是一个用 php 语言开发的非常快速并且轻量级的论坛程序,遵照 GNU 通用公共许可发行。

PunBB is  a fast and lightweight PHP powered discussion board

开发 PunBB 的初衷就是要得到一个速度最快的论坛程序,这一点已经实现了。PunBB 最大的特点就是快,几乎很少有论坛程序的速度能超过它。为了达到“快”的目的,PunBB很少使用图片按钮,尽可能使用文字链接。同时,它的功能也没有 phpBB 等大型论坛程序那么丰富。

为什么选用 PunBB?

Agora 的开发者选择 PunBB 的理由与其他 PunBB fans 是一样的:快速、简洁。因为功能相对简单,因此管理界面也很清晰,容易掌握;同时 PunBB 从一开始就做到输出符合 W3C 标准的 HTML 代码。


PunBB的安装

在PunBB的主页上下载,安装包只有163KB!我喜欢简单的东西!
PunBB的安装非常简单,以下是具体的步骤(假设你系统上已装好了LAMP):

  1. 下载punbb的安装包
  2. 解压
  3. 将upload目录拷贝到apache 的文档目录下并更名为forums。(/var/www/forums)
  4. 在MySQL里为PunBB设置数据库名,用户名及密码
  5. 修改PunBB以下目录的owner以便于数据的修改
  6. 重启Apache
  7. 访问http://localhost/forums,点击index.php进行初始设置
  8. 设置完成后,将系统提供的config.php脚本upload到论坛的根目录下(/var/www/forums)
  9. 大功告成!请访问http://localhost/forums开始使用你的论坛吧!
这里是ubuntu wiki上一篇关于PunBB安装的指引。

关于Joomla的一些资源

Joomla!之门,中文Joomla!用户的门户网站。有很多讲基本知识的文章,很好!

AutoIT,开始我还以为是关于如何使用autoit这个软件。这个网站本身很明显就是用Joomla建的,有很多关于使用Joomla的技巧。

Joomla跟Mambo有什么区别 (ZT)

在mambo中国社区(http://bbs.mambochina.net)的一篇帖子看到的:

1、界面:Joomla比Mambo更精细、美观,后台管理也更方便一些。

2、功能:Mambo的组件商业化既有组织又有步骤,但Joomla似乎更灵活、快捷。

3、扩展性:Joomla会继续坚持开源原则,因此更有利于创新思想的消化和吸收;但Mambo的商业化管理应该会使其内核更为健壮一些。

4、内核特征:由于管理模式不一样,同样是开源软件,但两者会因追求个性化而逐渐分歧,最终会导致目前的兼容组件分化和分裂。

从现在来看,两者外表上还是孪生姊妹,但是主导思想的不同会最终导致界面和功能的差异,并最终导致应用群体的分化。我个人的观点和判断是Mambo的主核最终会确定固定的用户目标并迎合商业化,而Joomla会一如既往地迎合品位型大众。

5、更新速度:Joomla的初期开发速度令人咂舌,但其稳定性较差。个人觉得1.5是个考验,既考验其稳定性,也考验其性能和健壮度。

6、未来:最令人关注的是Joomla1.5是否能把CMS与OS拉得更近,这决定Joomla能否在Mambo的CMS界面与功能已经几乎臻于完美时, 以开源技术将CMS点化为WEB-OS,赋予CMS更慎密的安全之门与更强壮地接纳第三方组件的能力。Mambo自Joomla诞生后的各个版本中,似乎 雷声大、雨点小,与Joomla的快速成长相比,显得逶迤不前。

两者之间,更愿意选择Joomla,因为其OS思想更能迎合WEB的发展,面向对象似乎也更突出,有利于第三方组件的进入。只是更期待其API、Group和Communities性能的加强。

7、用户:就像你和我,我们都被迫在Mambo和Joomla中作出选择。因此最希望两者能维持现在的共生与兼容状况。目前很多用户在根据组件选择M还是J?不太清楚,反正我是这样,界面、速度和组件,这是首先要考虑的。

8、组件商:不妙的是,Joomla的组件商们似乎并不愿意这样做,我们逐渐发现很多Joomla的组件在微笑着和Mambo说再见,从css和 index.php开始,步行渐远。一旦Joomla的API成熟,不敢说这些组件商的立场会站在那一边。倒是希望他们中立,呵呵,那样我们便可以多点儿 选择的自由。

9、风险:从1.10看起来Joomla已经度过稳定期,因此使用的风险已经不大。

更多的不同之处,请参考Joomla论坛:

接触M/J时间不长,与其说是回答问题,倒不如说是整理、回顾了一下学习过程。请大家指正。

Joomla的安装

Joomla的安装非常容易,Ubuntu wiki的一篇文章Joomla讲的比较详细,可以参考。在我的6.06上花了约20分钟就安装好了。(我的系统上LAMP在之前已经安装过了)。以下是需要注意的几个地方:

- 在/var/www/下为Joomla建的目录需要将其owner改为www-data,否则在安装完后需要手动将configuration.php文件上传到server上。并且在对一些系统配置进行设置时会因为没有write权限而出错。(比如修改模板等)
- 在安装完成后一定要将installation目录删除!否则别人正好访问你的网站就可以进行修改!
- 网站管理员的用户名是admin。开始我以为是输入在安装时输入的email地址,试了半天总是出错!:(