Category Archives: Other

lvm 学习笔记

lvm出来很久了,一直没弄过。当初的了解就是使用他之后就获得动态调整分区的特性。昨天装了一个rh,先尝试了一下使用这个lvm。 lvm里面用到的一些概念 lvm其实就是将一些“物理”分区,比如 /dev/hda1,/dev/hda6 ,或者“物理”硬盘,比如 /dev/hda,/dev/hdb 这些,都弄到一起,然后在外面看来,他们是一个整体,也就是一个VG(Volume Group,卷组),其实就类似于一块硬盘了。 而这些“物理”分区,或者“物理”硬盘,就是 /dev/hda1,/dev/hdb 这些,就是一个个PV(Physical Volume,物理卷)。可以看到PV可以是一个分区,也可以是一块硬盘。 有了VG我们还不能直接使用他,就和我们还需要给硬盘分区一样,我们也需要给VG分区,也就是创建LV(Logical Volume,逻辑卷)。这样,LV的数据其实就分布到了LV所在的VG里面,也就是所有的PV对应的分区或者硬盘里面。 掌握了VG,PV,LV这些概念之后,操作起来就很容易了。

我的 .fvwm2rc 文件

######## #set Environment variables SetEnv fvwm_img $[FVWM_USERDIR]/images SetEnv fvwm_icon $[FVWM_USERDIR]/icons SetEnv fvwm_scrpt $[FVWM_USERDIR]/scripts SetEnv fvwm_wallpapers $[FVWM_USERDIR]/wallpaper SetEnv fvwm_webbrowser /usr/bin/firefox SetEnv fvwm_term /usr/bin/urxvtc SetEnv fvwm_mail /usr/bin/mutt #SetEnv fvwm_media_player /usr/bin/xmms SetEnv fvwm_video_player /usr/bin/mplayer #这部分设置fvwm的一些变量,这样方便以后如果有变化的话,不需要全文去修改,只修改这里就可以了。 #后面使用 $[var_name] 来引用 ##################################

使用perl操作mysql数据库

东抄西抄拼凑的代码。关于perl dbi的文档可以查看这里。 #! /usr/bin/perl use DBI; use strict; #use Data::Dumper;   my $mobile = @ARGV[0]; my $msg = @ARGV[1]; my $db = "gnokii"; my $host = ‘localhost’; my $user = ‘gnokii’; my $password = ‘pwd’; my $in = ‘inbox’; my $out = ‘outbox’;   my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host",$user, $password, {RaiseError => 1});   print "$msgn"; [...]

恢复grub

安装双系统的时候,如果后安装的 win ,那么就会把mbr的grub信息干掉。通常的建议是先安装win后安装linux。 今天遇到的情况是通过 vmware  安装 suse 到物理硬盘的时候,没有将 grub 安装到 mbr,这样需要重新安装一下grub。 我的方法是找了一个 knoppix ,然后启动到 level 2 ,启动之后执行下面的命令先。 mount /dev/hdax /mnt/hdax #挂载linux的/分区 mount -o proc none /mnt/hdax/proc mount –bind /dev/ /mnt/hdax/dev 这样操作之后,就可以chroot到硬盘上面的系统了。 chroot /mnt/hdax /bin/bash 然后自己修改 /boot/grub/menu.1st 文件。之后执行 grub 命令。 grub>root (hd0,x-1) grub> setup (hd0) 我这里操作的时候遇到一个问题,suse好像往grub的map.xxx.gz里面写了关于fd0的信息,这样运行grub命令的时候会尝试去读取软驱。我在bios里面禁用了软驱才ok。

一个简单问题的三种实现方法

#arch-cn irc上面rock提出了一个需求,将一行太长的文字让他自动按照要求换行。 刚开始拿到这个问题的时候,感觉sed或者awk好像实现不了亚,没那么智能的,可是简单分析一下,“按照要求” 我们假定要求是 “每5个字符” 就换行一次。这样这个问题就明朗了。再换句话说,需求就是 “每5个字符插入一个换行符”。 第一种方法,用sed: cat $content | sed ‘s/\(.\{5\}\)/\1\n/g’ 第二种方法,用gawk(sssslang提供): cat $content | gawk –re-interval ‘{gsub(/(.){2}/,"&n");print}’ 第三种方法,好像有点bt,用perl: $cut = 15; @content = `tail /var/log/postfix.log`; foreach (@content) { for ($i=0; $i < length($_); $i+=$cut) { print substr("$_",$i,$cut)."\n"; } } 反斜杠\都被过滤掉了,不知道咋回事,自己看着加上。。

我的第一个perl脚本

是给irssi写的,只不过通过他和irssi接口,所有功能都是bash脚本实现的,回头看看如何转到perl。 use strict; use vars qw($VERSION %IRSSI);   use Irssi; $VERSION = ’1.00′; %IRSSI = ( authors => ‘wd’, contact => ‘wd@wdicc.com’, name => ‘My First Script’, description => ‘This script allows ‘ . ‘you to query weather and other info ‘ . ‘using some command.’, license => ‘Public Domain’, );   sub send_msg { [...]

继续来解决gnokii中文问题

这玩意原来和 locale 有关系。一个utf8编码的文件(里面包含中文),只要执行gnokii之前设置一下正确的locale手机收到就是正常的。比如我建立了下面的一个发送短信的命令。 # cat /usr/bin/gnokii_utf8 LC_ALL=zh_CN.utf8 /usr/local/gnokii/bin/gnokii $@ 这样cat utf8_text | gnokii_utf8 –sendsms ur_phone_num发送就没问题了。看样子和smsd和mysql的版本是没有关系的。之前尝试在debian上面升级mysql虽然失败了,不过看样子也没多大影响。

iptables做端口映射的一点新的心得

iptables做端口映射很简单的一个事情,我之前也写了如何来实现这个咚咚。今天要用到的时候,遇到了问题,写写怎么解决的。 写好SNAT和DNAT相关语句之后,在INPUT、FORWARD和OUTPUT里面针对各个端口都开放了权限,可是就是访问不了,看tcpdump可以看到,SNAT肯定是进行了,因为有对方回来的信息。后来仔细分析了一下整个转换的过程,发现了问题所在。 这里总共涉及到三台电脑,假设A是我们的server,B是中转server,C是希望通过B来访问A的客户端,所以一次完整的请求如下图。 C(客户端)->B(中转)->A(目的地)->B->C 所以呢,以25端口为例,需要开放的端口依次是: C : OUTPUT(目标端口25) B : INPUT (目标端口25) B : FORWARD (目标端口25) B : OUTPUT (目标端口25) A : INPUT (目标端口25) —>上面是请求,下面开始回应请求 A : OUTPUT (源端口25) B : INPUT (源端口25) B : FORWARD (源端口25) B : OUTPUT (源端口25) C : INPUT (源端口25) 如此,一次请求发送过去的时候,所有数据包的目的端口都是25(假设B开放的转发端口也是25),源端口是1024-65535之间的某个数值,反回来所有数据包的源端口都是25,目的端口对应前面的那个端口。 我的问题就是光开放了B的FORWARD的目的端口25,源端口25没有打开,这样数据不能正确返回给C,打开就好了。

debian下面解决gnokii读取短信的bug

上一篇文章提到过gnokii读取AT模式下设备的短信的时候会有问题,从xh那里看到了解决方法,自己也goolgle了一下,总结一下debian(sarge)下面解决这个问题的方法。 故障现象如下: # gnokii –getsms SM 1 [...] Message sent: 0×12 / 0×0009 41 54 2b 43 50 4d 53 3f 0d | AT+CPMS? write: [AT+CPMS?] read : [AT+CPMS?+CPMS: "SM",2,30,"SM",2,30OK] Message received: 0×12 / 0x002d 02 41 54 2b 43 50 4d 53 3f 0d 0d 0a 2b 43 50 4d | AT+CPMS? +CPM 53 [...]

给nagios添加故障时短信通知

nagios可以配置为在故障的时候发送Email,执行什么程序等。光执行程序这项可以实现的功能就太多了,没有做不到只有想不到。说说看我是怎么给nagios添加短信通知的。 首先需要一个能发送短信的东东,有些专门用来发送短信的猫,插上一张sim卡就可以用了,当然也可以找一个手机来做这个事情。然后用gnokii来通过sim卡发送短信,他主要是linux下面用来管理nokia手机的一个软件,当然所有支持AT指令的都可以使用。 debian上面安装好gnokii之后,/etc/gnokiirc是他的配置文件,主要修改两个地方: model = AT serial_baudrate = 9600 然后还需要将nagios用户(也就是启动nagios的用户)或者其他需要操作猫的用户加入dialout组,这样才有权限操作/dev/ttyS0这个设备,也就是第一个串口设备。 我的短信猫是通过串口连接到电脑的,如果你的是usb的或者其他类型的方式,比如蓝牙红外什么的,需要加载特定的模块,具体方法参考gnokii的网站。连接短信猫之后,可以用minicom测试一下是不是连接正确,他是类似于win下面的超级终端的一个程序。要注意连接的比特率,如果设备不支持可能不会有效果。设置好之后输入个AT,看是不是返回OK,如果返回那就连接正确了。 然后可以试试看执行gnokii –identify,我这里输出下面的内容: # gnokii –identify GNOKII Version 0.6.5 IMEI : 500182395xxxxxx Manufacturer : WAVECOM MODEM Model : MULTIBAND 900E 1800 Revision : 533b09gg.2C2 1742344 061002 11:23 这样表示我的猫被正确识别了。如果有问题,可以修改gnokiirc文件,打开debug模式,看看问题所在。发个短信试试看: #echo -e "testntest 2" | gnokii –sendsms 139102xxxx GNOKII Version 0.6.5 Send succeeded! 收到短信了么?呵呵。之后修改nagios的misccommands.cfg文件,添加你的cmd: define command{ command_name [...]