存档

作者存档

fg 7.0.2 release

2010年8月25日 wgzhao 1 条评论

Update: 请使用评论里给出的新版本链接。

下载它,使用它。你懂的。

https://dl-web.dropbox.com/u/220586/fg702p.exe
http://www.adrive.com/public/10caf93ac8b3d4b6b4364f29dee5f669b8de5d5c7fd6df869f9691494085f2f9.html

小心你的XX360,小心你的诺顿,小心你的瑞星,总之,小心除MS官方以外的“杀毒”软件。

Linux使用者正在得意的笑!

分类: 技术技巧 标签:

public DNS servers

2010年8月24日 wgzhao 1 条评论
珍爱生命,远离国内ISP提供的DNS。

以下是一些考谱的公众DNS服务器:

Google Public DNS (8.8.8.8, 8.8.4.4,4.3.2.1)、

Norton DNS (198.153.192.1, 198.153.194.1)、

OpenDNS (208.67.222.222, 208.67.220.220)、

OpenDNS Family (208.67.222.123, 208.67.220.123)、

Comodo Secure DNS (156.154.70.22, 156.156.71.22)、

ScrubIt DNS (67.138.54.100, 207.225.209.66)、

DNS Advantage (156.154.70.1, 156.154.71.1)。

分类: WEB开发 标签:

抓取LINUX桌面的视频

2010年8月23日 wgzhao 没有评论

$ ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

我们在一些视频网站上看到别人的3D桌面怎么怎么酷的视频,通常就是这么来的,ffmpeg可以直接解码X11的图形,并转换到相应输出格式。

ffmpeg的通常用法是,根据一堆参数,输出一个文件,输出文件通常放最后,下面解析下几个参数:

-f x11grab 指定输入类型。因为x11的缓冲区不是普通的视频文件可以侦测格式,必须指定后ffmpeg才知道如何获得输入。

-s wxga 设置抓取区域的大小。wxga是1366*768的标准说法,也可以换成-s 800×600的写法。

-r 25 设置帧率,即每秒抓取的画面数。

-i :0.0 设置输入源,本地X默认在0.0

-sameq 保持跟输入流一样的图像质量,以用来后期处理。

至于其他ffmpeg的用法,可以参考下面两篇文章:

How to Extract Audio Tracks from YouTube Videos
Converting YouTube Flash Videos to a Better Format with ffmpeg

分类: Linux技术, 技术技巧 标签:

山寨版Matrix

2010年8月19日 wgzhao 没有评论


山寨版Matrix,原由 mlsx 上載。

用皮皮的架子鼓架空笔记本,增加散热能力。
用从用户处讹来的原状IBM键盘做主键盘。
笔记本键盘主要用做快捷键。

分类: 随心所想 标签:

windows下压缩包在linux解压乱码的解决办法

2010年8月6日 wgzhao 5 条评论

我的系统是ubuntu 10.04 ,编码是zh_CN.UTF-8。
我从网络上下载的绝大部分zip包,解压后,连带目录和文件都是乱码。在终端尝试更换LANG,LANGUAGE等环境变量,还是不能直接解决问题。
而且用unzip解压后,无论你怎么设置convmv命令的编码参数,均不能解决问题。后通过7z工具算是暂时解决了这个问题。
首先用apt安装7z工具包。
然后用下面的两条指令:
1) LANG=C 7z x xxx.zip
2) convmv -f cp936 -t utf8 -r –notest *

分类: 技术技巧 标签: ,

在ssh服务里使用chroot

2010年7月14日 wgzhao 没有评论

对于虚拟主机而言,平衡用户易用体验和安全是一个挑战,比如如果开发ssh给用户,那么无疑能极大的增加用户操作的灵活性,但是ssh的强大也是得在安全方面让管理员很头疼,如何将用户限制在自己的环境中,就显得尤为重要。幸而openSSH已经了解到了这点,目前的版本均支持chroot功能,下面我简单的描述一下在ubuntu 10.04系统上如何实现,其他系统实现的原理相同,只是一些配置文件和指令不同而已。

1)确定chroot目录
按照传统,chroot的目录都在/var/chroot/下面。我们遵循这种传统,将目录限定在/var/chroot/sshd下面。

2)创建必要的目录和文件。
我们需要在/var/chroot/sshd下创建一个最小的系统环境,特别是需要有交互终端,如果用到一个系统高级的功能,还需要一些特定的设备文件。因为我们这里只是演示最基本的功能,复杂的的功能,可以根据错误提示要按需增加需要的资源。
$sudo mkdir -p /var/chroot/sshd/{bin,home,etc}
$sudo apt-get install busybox-static
$sudo cp /bin/busybox /var/chroot/sshd/bin/

每次敲busybox 显然不够环保,我们还是做一些额外的工作,将所有内置的busybox命令都用软链接的方式导出来,下面的python脚本能快速帮你做到这点。

cat ctlink.py
#!/usr/bin/env python
import commands
import os,sys

output=commands.getoutput('./busybox --help')
c=[x.strip() for x in  output.split('functions:')[1].strip().split(',')]
for x in c:
	os.system("ln -sf busybox %s" % x)

只需要在/var/chroot/sshd/bin/下面执行这个脚本就好了。

为了能让chroot环境能正确识别用户,组等信息,我们需要在etc目录下创建passwd,group,shadow等文件。而用户登录验证的时候,依赖的是chroot之前的/etc/{passwd,shadow,group}文件,这里我们采取硬链接方式来解决这个问题
$cd /var/chroot/sshd/etc
$sudo ln -n /etc/{passwd,group,shadow} .

当然,如果你的/var和/并不是在一个分区上,那么硬链接就不能工作,那你可以尝试在/etc和/var/chroot/sshd/etc来个同步工具。

3)创建测试帐号
我们不用之前的用户帐号,是因为我们需要对帐号的基本信息做一些修改,我们不想破坏你现在的环境,因为来一个测试帐号是比较安全的。
$ sudo useradd -d /var/chroot/sshd/home/test -m -s /bin/sh test
然后修改/etc/passwd文件将
test:x:1001:1001::/var/chroot/sshd/home/test:/bin/sh
修改成
test:x:1001:1001::/home/test:/bin/sh
接着创建密码
$sudo passwd test
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码

4)修改openssh-server配置文件
编辑/etc/ssh/sshd_config文件,在最后一行增加chrootDirectory指令来指定chroot的路径,类似如下:
chrootDirectory /var/chroot/sshd
保存退出。

5)测试,测试
以上步骤完成后,执行
$sudo /etc/init.d/sshd reload
来重新加载配置文件
然后我们可以测试了,下面是一个登录的测试结果:

$ ssh test@localhost
test@localhost's password:
Linux wgzhao-laptop 2.6.32-23-generic #37-Ubuntu SMP Fri Jun 11 07:54:58 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
~ $ pwd
/home/test
~ $ cd /
/ $ ls
bin   etc   home
/ $

分类: Linux技术 标签: ,

共享会话的ssh连接配置

2010年7月2日 wgzhao 没有评论

针对一个服务器需要同时开几个ssh连接,也许是同一个帐号链接,也许是不同的帐号,你是不死和厌烦了每次的都要输入密码?其实ssh链接可以做到共享会话的。
一个办法是用一些ssh链接客户端,比如Windows下的Secure CRT,Linux下的hotssh
另外一个办法,就是自己修改ssh客户端配置文件,创建~/.ssh/ssh_config文件,加入下面的内容:
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

当对服务器发起一个链接的时候,在~/.ssh目录下就会创建一个文件,文件命名规则是master-@: 当你退出所有多该服务器的链接是,该文件会自动删除。
现在就尝试吧

分类: Linux技术, 技术技巧 标签:

redhat el5如何映射裸设备到逻辑卷

2010年6月24日 wgzhao 没有评论

之前的版本如何做,这里不做描述,自行google。

之前通常的方法,在该版本,KERNEL并不能直接获得设备名称或者主次设备号,我们需要通过dmsetup指令来间接获得。

一下操作的目录均在/etc/udev/rules.d/。

1)编辑90-dm.rules文件,注释掉下面则行

KERNEL==”dm-[0-9]*”, ACTION==”add”, OPTIONS+=”ignore_device”

2)编辑60-raw.rules文件,加入下面几行:

KERNEL!="dm-[0-9]*",GOTO="skip_dm"
PROGRAM!="/sbin/dmsetup  ls --exec /bin/basename -j %M -m %m", GOTO="skip_dm"
RESULT=="vg1-lv1", RUN+="/bin/sh -c '/bin/raw /dev/raw/raw1 $MAJOR $MINOR'"
LABEL=skip_dm
上面第一行代码表示如果不是dm设备,则直接跳到skip_dm处
第二行表示如果后面的指令返回为假(非0值),则跳到skip_dm处。
如果以上条件满足,则来到真正的裸设备映射指令。注意要注意的是RESULT给出的结果是/dev/mapper下的lv名称,而不是大家通过google查询到的一些资料所宣称的mpath1,当然,到底这里结果值是多少,我们下面会通过测试来获得。后面的RUN指令就比较浅白了,直接通过主次设备号来做绑定。
如果还有其他LVM设备需要绑定,依次添加类似行。
但是,但是,如果你有上百个LVM设备需要做裸设备映射呢?难道写上几百行。当然不需要这样,我们可以通过匹配方式来操作,就像下面这样:
RESULT=="vg1-lv[0-9]*",RUN+="/bin/sh -c '/bin/raw /dev/raw/raw$MINOR $MAJOR $MINOR'"
这里我们通过次设备号来作为裸设备的编号依次映射。
恩,看上去很好,But,这里有个bug,那就是我们无法对raw0这样的设备进行映射,而第一个LV对应的MINOR恰好是0的话(很不幸,大部分情况是这样),那我们该怎么办。简单的办法是每次给MINOR+1来作为裸设备的编号。就像下面这样:
RESULT=="vg1-lv[0-9]*",RUN+="/bin/sh -c '/bin/raw /dev/raw/raw$((MINOR+1)) $MAJOR $MINOR'"
看上去很美好,很遗憾,我在Asianux 3.0 SP2,Centos 5.4版本上均没有成功。所以我采取了下面折衷的办法:
KERNEL!="dm-[0-9]*",GOTO="skip_dm"
PROGRAM!="/sbin/dmsetup ls --exec /bin/basename -j %M -m %m", GOTO="skip_dm"
RESULT=="vg1-lv[0-9]*", RUN+="/bin/sh -c 'if [ $MINOR -eq 0 ]; then /bin/raw /dev/raw/raw256 $MAJOR $MINOR; else /bin/raw /dev/raw/raw$MINOR $MAJOR  $MINOR;fi'"
LABEL=skip_dm
上面的做法是如果次设备号是0的话,我们尽可能把他映射到裸设备编号靠后的设备,这里采取的是256。如果你需要映射的设备操作超过256的话,你知道该怎么办
保存该文件后,执行start_udev,然后执行raw -qa,看看是不是已经绑定了,类似如下:
/dev/raw/raw1:	bound to major 253, minor 1
/dev/raw/raw2:	bound to major 253, minor 2
/dev/raw/raw3:	bound to major 253, minor 3
/dev/raw/raw4:	bound to major 253, minor 4
/dev/raw/raw5:	bound to major 253, minor 5
/dev/raw/raw6:	bound to major 253, minor 6
/dev/raw/raw7:	bound to major 253, minor 7
/dev/raw/raw8:	bound to major 253, minor 8
/dev/raw/raw9:	bound to major 253, minor 9
/dev/raw/raw10:	bound to major 253, minor 10
/dev/raw/raw11:	bound to major 253, minor 11
/dev/raw/raw12:	bound to major 253, minor 12
/dev/raw/raw13:	bound to major 253, minor 13
/dev/raw/raw14:	bound to major 253, minor 14
/dev/raw/raw15:	bound to major 253, minor 15
/dev/raw/raw16:	bound to major 253, minor 16
/dev/raw/raw17:	bound to major 253, minor 17
/dev/raw/raw18:	bound to major 253, minor 18
/dev/raw/raw19:	bound to major 253, minor 19
/dev/raw/raw256:	bound to major 253, minor 0
分类: Linux技术 标签: , ,