debian:ssh安全自动登录设置

用ssh来管理远程服务器真是一件很舒适安逸的事情,当然前提是要做足安全工作,internet上可是杀机四伏啊。

记得我刚安装好Debian的时候 ,为root设置了一个很简单的密码,然后开放了ssh服务,没几天root帐号就让人给暴了, 看看/var/log/auth.log吧,真是惨不忍睹,里面全是尝试ssh登录的记录。好吧,我承认,当时是太没经验了。当然现在这种情况是一去不复返了。

下面就来说说如何提高ssh登录的安全性和自动登录ssh服务器。
Continue reading “debian:ssh安全自动登录设置”

traceroute: 使用纯真IP数据库显示中间路由器以及主机的地理位置

traceroute是常用的网络诊断和查询工具,但是通常traceroute只能显示中间路由器和主机的ip地址和主机名,如果能输出机器的地理位置是最好不过了。怎么办?重新写一个traceroute?这是windows的思路。traceroute已经足够好了,为什么要重写呢,我们只要把结果加工一下就可以了。不得不佩服UNIX的设计哲学,无疑这种正交的功能,如果硬要搀和在一起,实在是没什么必要和额外的好处。 Continue reading “traceroute: 使用纯真IP数据库显示中间路由器以及主机的地理位置”

awstats:utf8编码页面使用纯真IP数据库显示地理位置问题的解决办法

utf8是目前最好的多字节编码方案,支持世界上的绝多大多数语言,也是我最喜欢的字符集。debian lenny 上的awstats安装完毕后,默认输出iso-8859-1字符集,对中文支持不友好。打开/usr/lib/cgi-bin/awstats.pl
,定位到大约第80、81行将$PageCode变量的内容更改为’UTF-8′,这样awstats就可以吐出utf8编码格式的页面了。修改成utf8字符集还有一个好处,不用加载decodeutfkeys插件就可以正确的显示来自google的中文搜索关键字了。至于百度让它自生自灭去吧!

awstats通过插件qqhostinfo插件和qqwry.pl库使用纯真IP数据库可以显示来访者的地理位置,是一个不错的解决方案。具体的使用方法网上转载很多,可以google之。纯真IP数据库使用的是gbk/gb2312/gb18030系列编码,而我的awstats使用utf8编码,所以显示出来的物理地址全部是乱码。解决方法也很简单,打开qqwry.pl,在文件前面加上一句”use Encode;”,然后找到”return $ipaddr;”这一行,在其前面加上一句”$ipaddr=decode(“gbk”,$ipaddr);” 就ok了,因为perl 5内部使用的就是utf8编码,所以就不用再encode成utf8了。

likely,unlikely宏与GCC内建函数__builtin_expect()

先罗嗦几句

最近在读linux 2.6 内核,虽然以前已经看了很多相关的知识,<<linux内核完全注释(0.11)>>也看了2,3遍,但读2.6内核仍然感到很吃力。面对2.6如此庞大的内核,信心真的不是很足,而且好像也没有很好的、有帮助的论坛来一起探讨,哎!现在正在边看<<情景分析>>,边看最新的内核,自<<情景分析>>出版以来,内核已经有了很多的变化,好难读啊!如果这样读下去算不算“皓首穷经”呢,不得而知了!
Continue reading “likely,unlikely宏与GCC内建函数__builtin_expect()”

BASH脚本中使用正则表达式检查IP地址和端口号

新版本bash(可能从3.0以后)内置了运算符 =~ 来支持正则表达式匹配。请注意此运算符只能用在[[…]]表达式中,而不能用在[…] 中。bash内置支持的好处在于使用方便和效率提升,不需要fork一个process即可以进行正则表达式匹配。但是似乎bash对正则表达式的支持不很完善,比如用 转义符\d无法匹配单个数字,必须用 [0-9]来匹配才行,比较罗嗦。
Continue reading “BASH脚本中使用正则表达式检查IP地址和端口号”

Ubuntu:Partition table entries are not in disk order

前几天刚安装了ubuntu 9.04,在分区的时候,先从磁盘的最后面划出大约2G的空间做了swap,然后再分的/,/var,/tmp,/home。安装好了才发现,虽然swap在磁盘的最后面,其设备号却为/dev/sda6,排在其他分区的前面,sda1和sda5为XP使用的分区。虽然看着有些不爽,但是不影响使用,也就没管它。

今天用sudo fdisk -l查看分区表的时,在打印的分区列表最后面有一句话:Partition table entries are not in disk order,又勾起了我的洁癖,决定把分区表顺序调整过来。

sudo fdisk /dev/sda进入fdisk的shell,然后输入f回车就可以把分区顺序调整过来了,然后输入w保存退出。因为root分区的设备号从(hd0,6)变成了(hd0,5),所以grub就会无法找到root分区,从而无法进行引导。

用ubuntu 9.04的livecd引导进入系统,进入grub,然后root (hd0,5),setup (hd0) 就可以了。
ubuntu9.04是用uuid来标示分区的,所以/etc/fstab和/boot/grub/menu.lst不用更改就可以顺利的启动系统了。

轻轻松松修改mysql默认字符集为utf8

utf8是我很喜欢的的字符集,在我的Debian lenny上安装mysql后,默认的字符集是latin1,现在就让我们把mysql相关的所有默认字符集都更改为utf8。

在/etc/mysql/conf.d目录下面新建一个文件charset.cnf,增加如下内容:
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
default-character-set =utf8

然后执行命令sudo /etc/init.d/mysql reload,现在连上你的数据库看看吧,默认的字符集和校对集全部变成了utf8。