Archive for linux

额 早就想写这么个脚本了。这次有点时间写了一下,借助shell下的工具和python还是可以很快写好。 发现总有人爆破我ssh密码,我修改了端口还是跑。是盯上了还是怎么。如果关闭密码登录会好,但是每次换电脑就要添加公key,感觉还是密码方便一点。 <pre lang="python"># coding: utf-8 import os import time def lo(): ban_ip_list = [] output = os.popen("""grep "Failed password for root" /var/log/auth.log | awk {'print $11'} | uniq -c | sort -rn""") for l in output.readlines(): count, ip = l.split() if int(count) > 5 and ip not in ban_ip_list: ban_ip_list.append(ip

Continue

同事使用mtop监控mysql和redis,redis没有流量监控,然后我写个脚本集成到mtop里边。然后查了相关资料<a href="http://blog.0x55aa.com/linux/1216.html">snmp</a>。 发现线上n多的负值,不知道问题,我本地没有问题。我查了64位系统的流量累加没有上限,后来同事说可能snmp是32位的,汗。我在redis流量表中类似mtop的操作,保存临时值然后清除,移动到history表中,也看不到具体问题在哪。我也不能有线上权限,让同事查我看,大约知道在4000多M的时候出现负的,差不多应该上限是4g。然后判断 new-old<0,就new+4096-old,然后没出现负值了。

Continue

安装snmp apt-get install snmp snmpd 编辑/etc/snmp/snmpd.conf配置文件, 1.将原有“agentAddress udp:127.0.0.1:161”改为: agentAddress 192.168.1.9 /*192.168.1.9为本机IP,即监控服务器要监控的主机IP*/ 2.加入一行如下: access MyROSystem "" any noauth exact all none none 3.将原有“rocommunity public default -V systemonly” 的"-V systemonly" 参数去掉,变成: rocommunity public default 4.将“#trap2sink localhost public”和“#informsink localhost public”前面的“#”去掉,改为: trap2sink localhost public informsink localhost public 5

Continue

开始想用python做一个键盘记录的工具,搜索linux keyboard hook,发现找不到东西。后来发现原来linux直接读设备文件就行了,才恍然大悟。 /dev/input/下有十多个event。要找到键盘对应的event,查看grep keyboard /proc/bus/input/devices -A 12。 然后找到一点资料,自己写了一段程序: <pre lang="python"># coding: utf-8 import os import struct fmt = "llHHI" size = struct.calcsize(fmt) filename = "/dev/input/event3" fd = os.open(filename, os.O_RDWR) while 1: op = os.read(fd, size) timeval, suseconds, typ, code, value = struct.unpack(fmt, op) print typ, code, value</pre>

Continue

好吧,我先把yin语言的java代码看了个差不多才想编译一下,主要原因还是想打印点测试的东西,并不是想写点什么。 总的来说像淫神说的,写得代码却是容易阅读。我java只是上学的时候开过课,再没用过,看的过程中只查了两三个的函数就看完了。看完了发现写个括号语言不算太难0 0,我的意思仅仅是学习知识不是编写一个可以用的语言。编译原理的课也开了,都是理论,传说中的龙书又是啥书的,我几分钟看来一遍,感觉和课本没什么区别。看一个编写初期的代码更容易理解一些东西。以前也想自己实现过,想想解析代码的复杂程度就怕了。 环境需求,参照github的wiki上。 java jdk 1.7,ubuntu12.04自带好像是openjdk 我以前搞安卓游戏的时候换过了。 maven 3.2 我直接从官网下载的二进制版本,http://maven.apache.org/download.cgi。解压到/opt/maven-3.2.1,vim /home/a0x55aa/.bashrc,添加export PATH=/opt/maven-3.2.1/apache-maven-3.2.1/bin:$P

Continue

早就想实现这么个功能,大部分不确定删除的时候,我都直接先移动到我用户的tmp目录下,这个目录我都放一些可删可不删的测试文件等。确定的我就直接删除。但是还有失误啥的,根本不可能预防所有情况。今天搜索一文章,正好实现。原理就是用一个新命令替换系统的rm命令。 原文http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html。 1.<code>sudo apt-get install trash-cli</code> 原文有介绍这个工具,我也没用试试0 0。 2.<code>sudo vim /usr/local/bin/trash-rm</code> 文件内容 <pre lang="bash">#!/bin/bash # command name: trash-rm shopt -s extglob recursive=1 declare -a cmd ((i = 0)) for f in "$@" do case "$f" in (-*([fiIv])

Continue

我要把mercurial-server的相关文件放到web项目里一起部署,于是想知道在apt-get安装mercurial-server时都执行了那些操作。官方没有手动安装的教程,我就查了整理一下。 开始找到这个命令,这个命令只会将一些安装的文件列出来,还有一些不知道什么用0 0.没有达到目的。 dpkg -x xxxx.deb xxxx 然后找到 ar vx xxxx.deb .deb其实是一个ar档,所以使用ar解压。 deb 包本身有三部分组成:数据包,包含实际安装的程序数据,文件名为 data.tar.XXX;安装信息及控制脚本包,包含 deb 的安装说明, 标识,脚本等,文件名为 control.tar.gz;最后一个是 deb 文件的一些二进制数据,包括文件头等信息,一般看不到,在某些软件中打开可 以看到。 control.tar.gz 则包含了一个 deb 安装的时候所需要的控制信息。一般有 5 个文件:control,用了记录软件标识,版本号,平 台,依赖信息等数据;preinst,在解包 data.tar.gz 前运行的脚本;po

Continue

在工作时服务器上环境的搭建,做个笔记记录。用到的东西主要有:django,nginx,supervisor,Gunicorn,virtualenv,mysql。 安装就略过了,每一个的文档上有介绍。virtualenv有一个virtualenvwrapper方便操作。 先安装virtualenv,然后在python虚拟环境里边安装django,gunicorn等相关库。 supervisor用来守护django网站启动的进程,默认配置文件添加/etc/supervisor/conf.d/name.conf <pre>[program:code] command=/home/sys/.virtualenvs/%(program_name)s/bin/gunicorn %(program_name)s.wsgi:application -c /home/www/%(program_name)s/%(program_name)s/gunicorn.conf.py user=hg directory=/home/www/%(program_name)s autost

Continue

用ubuntu解压zip文件后一堆乱码, 1. 通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) &nbsp;

Continue

安装时没有安装桌面环境。 <strong>1.查看centos系统版本</strong>:命令lbs_release -a <strong>2.mysql配置。</strong> mysql从安装光盘中选择安装的。版本是5.0.77 修改/etc/my.cnf文件 default-character-set=utf8 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 default-character-set=utf8 增加 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/v

Continue