作者归档:ring0

修改ubuntu、debian下crontab的默认编辑器

因为不喜欢nano,想换用vim,google 中有用环境变量的,有用 select-editor 的,但select-editor不是总是存在的,只好自己分析研究下了。

在debian (wheezy/sid) ubuntu 下分别用 strace 对crontab -e 进行了跟踪, 发现crontab都是使用sensible-editor作为编辑器的。ubuntu下sensible-editor 会查找 /home/<username>/.selected_editor 文件,如果没找到,则列出系统当前可用的编辑器,提示用户选择,如果文件存在,读取文件内容并用指定的编辑器打开文件;debian下 sensible-editor查找系统变量中各bin目录下是否存在editor,然后使用editor打开文件,同时editor是指向 /etc/alternatives/editor 的软链接,/etc/alternatives/editor 又是指向具体编辑器的软链接,所以修改方法自然明了了,alternatives是debian 包管理系统提供,所以使用以下命令可以直接修改alternatives 下的软链接:

update-alternatives --config editor

然后选择自己喜欢的编辑器就ok了。

浅谈web服务器安全

刚入linux这行的时候,我心思都在服务器性能方面。在从事了两份工作后发现,一些小站就十几二十台服务器,管理方便,技术选择性多,性能是少量资金投入就可以解决的问题。安全方面知识我知之甚少,现在来看这些小站普遍的问题是安全意识薄弱,遭受过不同程度上的攻击。现在的公司就是如此,网站被挂马,服务器上的所有站都被篡改,在我接手后还没有有效的应对措施,自己也在不断摸索,目前有了一些小进展,并且发现了一些开源工具,来说说我的思路。 继续阅读

再回首

2011年已经过去,农历兔年马上要结束了,提前回了家,也就提前参与进了和家人一起准备年货、打扫卫生的辞旧迎新的进程中,但似乎又夹杂了点不平静,因此又激起了对过去一年的回忆。

去年一篇博文中,承诺送上一首自弹自唱的《麦田上的乌鸦》,可悲的是我是个想的多做的少的人,当然这里还有个小插曲。去年为了准备年会节目《麦田上的乌鸦》,买了我人生中第一把吉他。可惜多年来技术一点没有提高,年会上表演并不尽如我意,而且是按照领导们的意思删减过的版本,因此才萌生了完整录一遍这首歌的想法。可为何又没有付诸实施,这里的还有个可悲的转折。我背的吉他回家,坐着火车吃着火锅,出了北京城,还没到家,被我一个姐姐给劫在了石家庄,要我去帮他做些并不那么重要的事。完工后正要回家,又被我爸劫在了县城参加一个老乡儿子的婚礼,就在婚礼上吃的不亦乐乎的时候,又一个许久不见的亲戚热情的非要我认识一下他的儿子,事实是我们早就认识,就在他儿子进来我起身申手握他儿子手时,吉他被碰到了,当时只觉得倒在地上的声音有点大,殊不知惨剧已经发生,直到回到家想给家人秀一下新吉他时,发现琴弦全是松的,之后我全身的汗毛都直起来了——琴头折了。一顺间觉得这年过的太心碎了,经过些许时间接受这个现实之后,就开始寻找修复的办法,好在我姑姑家是做家具的,常和木材打交道,费尽周折才得以修复,损坏的位置不影响音质,可心情已经完全被破坏了,因此录歌这事搁浅。为了弥补我的失言,只好在今年这个时间,把去年年会上的那段视频放出来,和大家一块乐一乐吧(我也是今年年会后才刚刚拿到这段视频)。说句实话,穿着很土,唱的差点意思,哈哈欢迎拍砖。

此刻,在寻找正文入手点的过程中,比较有意思的是闪现在我脑海中最多的一个词是馒头,想知道为什么吗?那就看下去吧! 继续阅读

python实现,修改cisco交换机配置

该脚本实现了自动登陆cisco交换机,可在特权模式、配置模式、子配置模式间自由切换,还实现了添加、修改缺省网关的功能。当然你可以使用返回的expect对象,执行其它交换命令。

需要安装python pexect模块,该模块不支持windows,所以此脚本也就不能运行在windows下。
继续阅读

若无必要,勿增实体

标题是奥卡姆剃刀定律核心原理,奥卡姆剃刀将会是未来一定时期内影响我至深的一则定律,因为“如果你不能改变旧有的思维方式,你也就不能改变自己当前的生活状况。”,特此转载。

简述

奥卡姆剃刀定律(Occam’s Razor, Ockham’sRazor)又称“奥康的剃刀”。奥卡姆剃刀定律,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William ofOccam,约1285年至1349年)提出。这个原理称为“如无必要,勿增实体”,即“简单有效原理”。(奥卡姆(Ockham)在英格兰的萨里 郡,那是他出生的地方。他在《箴言书注》2卷15题说“切勿浪费较多东西去做用较少的东西同样可以做好的事情。”

原理内容

这个原理称为“如无必要,勿增实体”(Entities should not be multiplied unnecessarily)。有时为了显示其权威性,人们也使用它原始的拉丁文形式:

Pluralitas non est ponenda sine necessitate.

Frustra fit per plura quod potest fieri per pauciora.

Entia non sunt multiplicanda praeter necessitatem.

继续阅读

python实现,通过ping监控主机状态

简单用python实现了一段监控主机状态的代码,有两个线程,一个线程负责执行ping,将ping的结果保存在主进程的LIST中,另一线程负责检查该结果,并在检测到主机状态变化时执行其它操作,比如发送邮件报警等。有两种情况会认为主机down了,一是当连续5个ping包都timeout时;二是在20次ping 中有10个timeout时,后者主要目的在于当主机线路出现抖动(时通时断)时也认为主机不可用了;在主机处于down状态时,连继5次ping包都正常,则将主机状态恢复为up。

目前该脚本还有些不足,threading创建多个线程后,发送给主进程的SIGINT信号都被阻塞了,所以ctrl+c不能中止程序,要直接kill掉才行,正在想法解决。
以上问题已经解决,将子线程设置为Daemon,主进程不再被子线程阻塞,可以正常接收信号。为保证主进程不退出,使用一个判断子线程是否存活的循环,子线程中增加判断全局的一个标记,如果标记为True则结束并退出,主进程收到ctrl+c的信号后,将全局的标记设置为True,子线程退出,主进程检测到线程没有存活也就退出。

在我们实际应用中,主机状态发生变化执行操作是邮件通知和修改三层交换机默认网关,两个功能也是通过python来实现的,目前代码很不整洁,待整理后放出。

继续阅读

使用ubuntu字体美化fedora

升级到ubuntu 11.04用了一段时间,实在觉得unity不太给力,用起来别扭,后来装了个dock,用的舒服点了,不过还是和gnome感情深,本来很不适应fedora(主要是包管理系统),但ubuntu这么折腾认我动摇了对它的执着,正巧fedora15正式版发布,就装上试了试,感觉还是gnome3更给力,只是fedora的字体还是没有改进,有的字大有的字小,有的笔画粗有的笔画细,有点忍受不了,看了看这篇文章,对linux字体系统有了近一步了解,觉得完全可以用ubuntu字体美化fedora,暴力操作了一通,达到了效果,方法比较简单,如下:

1.将ubuntu 11.04字体复制到fedora 字体目录。
mount /dev/sda1 /media/ubuntu
sudo cp -r /media/ubuntu/usr/share/fonts/* /usr/share/fonts/

2.将ubntu 11.04 字体配置文件复制到fedora字体配置目录。
sudo cp /media/ubuntu/etc/fonts/fonts.d/* /etc/fonts/fonts.d/
sudo cp /media/ubuntu/etc/fonts/conf.avaid/* /etc/fonts/conf.avaid/
sudo cp /media/ubuntu/etc/fonts/fonts.conf /etc/fonts/fonts.conf

3.更新defora字体缓存
fc-cache -vf

4.重启

ubuntu下启用 synaptics 双指滚动(多点触摸板)

方法已更新,请移步至《ubuntu 12.04(deepin 12.06) 中启用双指滚动(two finger scroll)

在 “系统” — “首选项” — “鼠标” 中的 “触摸板” 选项卡中 选中“双指滚动”

有可能此时你已经可以使用双指滚动和双指点击的功能了,但在一些电脑中可能不会,比如我的,稍稍研究了一下,synclient -l 输出中 EmulateTwoFingerMinZ 的值为 280,此值代表着双指触摸时所用的力度,在我的电脑上我用了很大的劲,很大的触摸面积双指效果都出不来,看来280是太离谱了,执行:synclient EmulateTwoFingerMinZ=20 ,双指轻触触摸就有效果了,双指点击(鼠标右键)同样可以正常工作。

nginx 配置 alias 支持php 要加一句rewrite

今天用nginx做nagios web服务器,大概配置如下:

location /nagios/ {
alias  /opt/nagios/share/;
index  index.php;
}

location ~ ^/nagios/.+\.php$ {
rewrite /nagios/(.+\.php) /$1 break;
include fastcgi_params;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param SCRIPT_FILENAME /opt/nagios/share$fastcgi_script_name;
}

去掉以上配置中的rewrite语句后,访问php文件就有问题(空白),想想问题可能出在 SCRIPT_FILENAME这个值,这个值又是由 /opt/nagios/share$fastcgi_script_name 组成,所以最终问题出在$fastcgi_script_name变量上,在没有rewrite语句时$fastcgi_script_name的值是/opt/nagios/share/nagios/index.php,加入rewrite以后该变量的值就成了/opt/nagios/share/index.php,可见$fastcgi_script_name的值用了 location 后面匹配到的值,而/opt/nagios/share/nagios这样的目录是不存在的,需要用rewrite修正一下变量值去掉路径中的nagios,则一切恢复正常。