2012 年 10 月

浏览模式: 标准 | 列表 | 图文
busybox

busybox

最近买了一个UIS2000,也就是一个NAS设备了。因为内置了linux操作系统。所以就想着用它来做一些其他的事情,比如备份,比如做个小网站之类的。
但是功能确实不够强大,于是同事建议我下载一个最新的busybox,因为功能更强大。于是我查了一下busybox是干嘛的,用法怎么样,看了一下。哇塞,好方便啊。。。。。。

busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器, 而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的 工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数 linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都 是指向busybox的链接.
Busybox的小身材大作用的特性,给制作一张软盘的linux带来了及大方便.
---
关键,它真的很小,带的功能却不少,什么bzip,tar,cat,vi等等常用的都带了。。crontab 都有了。。。。ftpd,httpd,我晕啊。还有什么是它没有的?
----
安装软件也很方便,先./busybox --list,看看有多少功能。然后。。。
可以这样用busybox
#busybox ls
他的功能就相当运行ls命令
最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能.
#ln -s busybox ls
#ln -s busybox rm
#ln -s busybox mkdir

然后分别运行这三个链接:
#./ls
#./rm
#./mkdir

就可以分别完成了ls rm 和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox
但是只要链接名不同,完成的功能就不同,busybox就是这么的神奇.
很多linux网站都提供busybox的源代码下载.

-----
下面的东东对我来说用不太倒,但我还是贴一下,供有心人做测试:
3,配置busybox

busybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置linux内核的朋友很容易上手.

#cp busybox-1.00.tar.gz /babylinux
#cd /babylinux
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig

下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心.
General Configuration应该选的选项
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf

Build Options
Build BusyBox as a static binary (no shared libs)
这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作.

Installation Options
Don't use /usr
这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接.

其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.

配置好后退出并保存.

4,编译并安装busybox

#make
#make install

编译好后在busybox目录下生成子目录_install,里面的内容:
drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
lrwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.
我编译出来的busybox可执行文件是935K,加上符号链接,整个_install目录是952K.加上845K的内核不是已经超过1440K了吗?别担心,我们将对整个根文件系统做大幅度的压缩.
-------上面的大部分内容都不是我写的,我只是做了一个简单的COPY。
不过我现在用的很爽。同事也编译了一个PHP,在我不会写bash的时候,我就准备用这个php来完成一些我的脚本了。只保留了两个文件:php和php-cgi。但我觉得php-cgi可能也用不到。。。一个纯php就足够了。黑黑
上面的大部分内容来自:http://hi.baidu.com/pylctstsddhistr/item/36cc0cbd3f44799d19469708

IFTTT

IFTTT

刚才在随便看看的时候,发现有人感慨。其实在互联网上的ifttt,在编程也是这样。
试想从第一行代码开始到编码结束,本身就是在执行着不同的ifttt,无非只不过ifttt的环境是在本地,而不是互联网应用了。
然后此人就想,如果我将每一个ifttt进行了封装处理。那么,软件就会象积木一样,一点点的堆起来。然后剩下的问题就是从第一个ifttt开始,怎么样将每一个结果和条件向下传递。

说了半天,ifttt究竟是什么?IFTTT的全称为:IF This Then That。很容易理解。
而且网上还有人举了个小例子:

它事实上就是我们很熟悉的MUD时代就有的Trigger,WOW里面也有,在Office里面叫Macro(当然,这个就复杂了)。简单说,就是把你的整个网络社交圈当作一个巨大的触发器,一旦特定的事件发生,就会触发IFTTT中设置好的Task的Trigger。而一旦Trigger被处罚,IFTTT就会相应地作出Action。
比如说:只要在Twitter上有人Mention我,就给我发一条SMS(手机短信)。
这个在IFTTT中就表现为:Trigger设置为Twitter的Mention Me,Action设置为SMS。结果就是如果有人在Twitter上Mention了你,你就会收到一条手机短信,内容为“你被@了。”
是不是很有意思?还有更有意思的:
Task1:如果老婆的Twitter上出现“加班了”三个字,就给我的邮箱发一封Email,标题为“你懂的”;
Task2:如果我收到一份标题为“你懂的”的Email,就自动向EmailList中“吃喝委员会”一栏的所有人发一份EMail,标题为:老地方搓一顿;
Task3:如果我收到一份标题为“你懂的”的Email,就自动向黄浦江大酒店发一份EMail,标题为“预订”,内容为“今天晚上7点,4人桌,老菜式,你懂的。”
Task4:如果晚上我的Twitter没有被Mention,自动发送短信到老婆的手机,内容为:今晚加班,安。
于是,结果就是,如果你老婆在Twitter上发言说“今天要加班了,真倒霉!”那你自动收到一份Email,然后自动发出一份订餐Email,一系列的邀请聚餐Email,然后晚上你来黄浦江大酒店,饭菜桌位都已经准备齐全了,一帮借口晚上加班的朋友们嬉皮笑脸地过来和你一顿胡吃猛喝,多惬意啊。然后,如果你和朋友们喝多了,没能在自己的Twitter上用一个小号Mention自己一下,IFTTT就会自动发短信给老婆说你其实是在加班,不是在和朋友们乱喝酒。
多么自动化智能化。
绝对是以后老婆管老公的首选利器啊!
当然,你也可以建立如下Task:
IF:凌晨04:01,Then:偷菜。(假定偷菜开放时间是凌晨四点)
所以,IFTTT是偷菜利器,神码半夜起床,都是浮云……

ifttt上其实有网站,上面的创意其实就是根据 ifttt的网站上的内容来实现的。不过我在想,大量的trigger,对系统的性能影响怎么样?
那么我开始说的那件事情,你觉得能成吗?将代码写成积木式,不停的堆?我是觉得玄,咱先不谈效率,效率在强大的CPU下面都暂时可以忽略。真的可以将所有的ifttt都能写出来吗?依赖环境怎么办?
我还是随便扯扯吧。不过,简单的还是可以考虑一下下的

Linux运维常用命令

微博上,@IT程序猿微博达人贴出了常用命令,他说:【Linux运维常用命令】实际运维中经常需要用到的命令,很实用。http://t.cn/zl8wFGQ

看了一下图,确实很常用。
每个-web-开发者都应该知道的关于-url-编码的知识---技术翻译---开源中国社区.pdf

1.删除0字节文件
find-type f -size 0 -exec rm -rf {} ;

2.查看进程
按内存从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr

3.按cpu利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr

4.打印说cache里的URL
grep -r -a jpg /data/cache/* | strings | grep "http:" |awk-F'http:' '{print "http:"$2;}'

5.查看http的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

6.sed-i '/Root/s/no/yes/' /etc/ssh/sshd_config sed在这个文里Root的一行,匹配Root一行,将no替换成yes.

7.1.如何杀掉mysql进程:
ps aux |grep mysql |grep -v grep|awk '{print $2}' |xargs kill -9 (从中了解到awk的用途)

killall -TERM mysqld

kill -9 `cat /usr/local/apache2/logs/httpd.pid`试试查杀进程PID

8.显示运行3级别开启的服务:
ls /etc/rc3.d/S* |cut-c 15- (从中了解到cut的用途,截取数据)

9.如何在编写SHELL显示多个信息,用EOF
cat << EOF
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF

10. for的巧用(如给mysql建软链接)
cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done

11.取IP地址:
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-或者

ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

12.内存的大小:
free -m |grep "Mem" | awk '{print $2}'

13.
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %sn",$5,$6}' | sort

14.查看Apache的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

15.因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦.
find / -name *.jpg -exec wc -c {} ;|awk '{print $1}'|awk '{a+=$1}END{print a}'

CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。

---------------------------------------------------------------------------------------
16 CPU负载 # cat /proc/loadavg
检查前三个输出值是否超过了系统逻辑CPU的4倍。

18 CPU负载 #mpstat 1 1
检查%idle是否过低(比如小于5%)

19内存空间 # free
检查free值是否过低也可以用# cat /proc/meminfo

20 swap空间 # free
检查swap used值是否过高如果swap used值过高,进一步检查swap动作是否频繁:
# vmstat 1 5
观察si和so值是否较大

21磁盘空间 # df -h
检查是否有分区使用率(Use%)过高(比如超过90%)如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录:
# du -cks * | sort -rn | head -n 10

22磁盘I/O负载 # iostat -x 1 2
检查I/O使用率(%util)是否超过100%

23网络负载 # sar -n DEV
检查网络流量(rxbyt/s, txbyt/s)是否过高

24网络错误 # netstat -i
检查是否有网络错误(drop fifo colls carrier)也可以用命令:# cat /proc/net/dev

25网络连接数目 # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n

26进程总数 # ps aux | wc -l
检查进程个数是否正常(比如超过250)

27可运行进程数目 # vmwtat 1 5
列给出的是可运行进程的数目,检查其是否超过系统逻辑CPU的4倍

28进程 # top -id 1
观察是否有异常进程出现

29网络状态检查DNS,网关等是否可以正常连通

30用户 # who | wc -l
检查登录用户是否过多(比如超过50个)也可以用命令:# uptime

31系统日志 # cat /var/log/rflogview/*errors
检查是否有异常错误记录也可以搜寻一些异常关键字,例如:
# grep -i error /var/log/messages
# grep -i fail /var/log/messages

32核心日志 # dmesg
检查是否有异常错误记录

33系统时间 # date
检查系统时间是否正确

34打开文件数目 # lsof | wc -l
检查打开文件总数是否过多

35日志 # logwatch –print配置/etc/log.d/logwatch.conf,将Mailto设置为自己的email地址,启动mail服务(sendmail或者postfix),这样就可以每天收到日志报告了。
缺省logwatch只报告昨天的日志,可以用# logwatch –print –range all获得所有的日志分析结果。
可以用# logwatch –print –detail high获得更具体的日志分析结果(而不仅仅是出错日志)。

36.杀掉80端口相关的进程
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh

37.清除僵死进程。
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9

38.tcpdump抓包,用来防止80端口被人攻击时可以分析数据
# tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts

39.然后检查IP的重复数并从小到大排序注意"-t +0"中间是两个空格
# less pkts | awk {'printf $3"n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"n"'} | sort -n -t +0

40.查看有多少个活动的php-cgi进程
netstat -anp | grep php-cgi | grep ^tcp | wc -l

chkconfig --list | awk '{if ($5=="3:on") print $1}'

41.kudzu查看网卡型号
kudzu --probe --class=network

匹配中文字符的正则表达式:[u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如0511-4405222或021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字

匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位

匹配ip地址:d+.d+.d+.d+

评注:提取ip地址时有用

匹配特定数字:
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数+ 0)
^-[1-9]d*|0$ //匹配非正整数(负整数+ 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数+ 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数+ 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

那个看内存从小到大的还真不知道。。。。那个取IP地址的,在现在的VPN一键安装包中很常见。我现在写脚本都是用PHP来实现的。现在有了这个,以后考虑用Bash写的时候就有很多参考了。
记忆中的片段

记忆中的片段

在10岁左右的时候,来过一次上海 ,那时候叔叔在上海的一家印刷厂里当裁缝。印刷厂的名字是上海十一印刷厂。有没有人民两个字不记得了。
然后来玩了将近有一个月,去了大世界、西郊公园。公交车是5分还是2分来着记不清了。
记忆中,厂里夏天有冰水,还有大光明冰砖(这个记不清是买的还是发的了。),反正我睡觉后醒来,叔叔在工作,旁边放着我溶化的冰砖。
其实,最想说的好象应该就是大世界里的一场电影。到现在为止,记忆犹新,场景是一个庄园,有西部牛仔,有拔枪游戏,然后牛仔好多都是机器人。但一直不知道是什么电影名称。。。

今天上网查了一下,用的关键字是:庄园 机器人 快速拔枪 牛仔,结果查到的都是什么摩尔庄园。最后。。。我真的找到了,关键词:电影 机器人 西部牛仔
第一条的内容就是:电影一部老片美国片未来游乐场西部牛仔全部是机器人因为事故 ...,收到了这个回复,很开心:

《西部世界》 70年代的一部老科幻片,中国曾引进过  详情见链接:  http://baike.baidu.com/view/5107579.htm
又是VPN手记。。。

又是VPN手记。。。

这是一个自动安装脚本,for 大便系列。比如 大便和ubuntu(版权不是我的,我也只是拿来改改) :

#!/bin/bash

function installVPN(){
apt-get update
#remove ppp pptpd
rm -rf /etc/pptpd.conf
rm -rf /etc/ppp
apt-get -y remove ppp pptpd
apt-get -y install ppp pptpd iptables

#注意,这里的一些refuse-pap之类的要注意,如果不能连接首先改这里。
#如果一直出错,将require-mschap-v2和require-mppe-128 这两行加密注释掉,(对应源文件)
echo name pptpd >> /etc/ppp/pptpd-options
echo refuse-pap >> /etc/ppp/pptpd-options
echo refuse-chap >> /etc/ppp/pptpd-options
#refuse-mschap
echo require-mschap-v2 >> /etc/ppp/pptpd-options
echo require-mppe-128 >> /etc/ppp/pptpd-options
echo proxyarp >> /etc/ppp/pptpd-options
echo nodefaultroute >> /etc/ppp/pptpd-options
echo lock >> /etc/ppp/pptpd-options
echo nobsdcomp >> /etc/ppp/pptpd-options


echo ms-dns 8.8.8.8 >> /etc/ppp/pptpd-options
echo ms-dns 8.8.4.4 >> /etc/ppp/pptpd-options
echo ms-dns 4.3.2.1 >> /etc/ppp/pptpd-options

#写到pptpd.conf文件中
echo option /etc/ppp/pptpd-options >> /etc/pptpd.conf
echo logwtmp >> /etc/pptpd.conf
echo localip 192.168.99.1 >> /etc/pptpd.conf
echo remoteip 192.168.99.9-99 >> /etc/pptpd.conf

#这个最好只能处理一次。否则每次都会修改,以防万一,改两次吧。。第一次应该失败
sed -i 's/#net\.ipv4.ip_forward=0/net\.ipv4.ip_forward=1/' /etc/sysctl.conf
sed -i 's/#net\.ipv4.ip_forward=1/net\.ipv4.ip_forward=1/' /etc/sysctl.conf
#echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
sysctl -p
#以下内容是for OPENVZ
#iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'`
#sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local

#echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'` >> /etc/rc.local
#echo exit 0 >> /etc/rc.local



# --- the sentence below was remarked By yanwen , what are you doing ??-----

}

function installOpenVZ(){
(installVPN)
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'`
sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local

echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'` >> /etc/rc.local
echo exit 0 >> /etc/rc.local
(setDefaultUser)
}
function installXen(){
(installVPN)
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE
sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local

echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE >> /etc/rc.local
echo exit 0 >> /etc/rc.local
(setDefaultUser)
}

function setDefaultUser(){
#默认用户
echo gouki \* 123456 \* >> /etc/ppp/chap-secrets
/etc/init.d/pptpd restart
}

function repaireVPN(){
echo "begin to repaire VPN";
mknod /dev/ppp c 108 0
/etc/init.d/pptpd restart
}

function addVPNuser(){
echo "input user name:"
read username
echo "input password:"
read userpassword
echo "${username} pptpd ${userpassword} *" >> /etc/ppp/chap-secrets
/etc/init.d/pptpd restart
}
function disableEncyption(){
sed -i 's/^require-mschap-v2/#require-mschap-v2/' /etc/ppp/pptpd-options
sed -i 's/^require-mppe-128/#require-mppe-128/' /etc/ppp/pptpd-options
/etc/init.d/pptpd restart
}
function enableEncyption(){
sed -i 's/^#require-mschap-v2/require-mschap-v2/' /etc/ppp/pptpd-options
sed -i 's/^#require-mppe-128/require-mppe-128/' /etc/ppp/pptpd-options
/etc/init.d/pptpd restart
}
echo "which do you want to?input the number."
echo "1. install Xen VPN service"
echo "2. install OpenVz VPN service"
echo "3. repaire VPN service"
echo "4. add VPN user"
echo "5. disable encryption"
echo "6. disable encryption"
read num

case "$num" in
[1] ) (installXen);;
[2] ) (installOpenVZ);;
[3] ) (repaireVPN);;
[4] ) (addVPNuser);;
[5] ) (disableEncyption);;
[6] ) (enableEncyption);;
*) echo "nothing,exit";;
esac

第一次写和改。连参数都不会。将就点了。。嗯。上面的内容复制起来比较麻烦,所以我做一个文件,可以直接下载:
放到自己的目录下,chmod a+x 这个文件。再执行就OK了。
你可以先看一下这个文件。。。以防万一
下载地址:21a964d1c161938b942054770a657e97

还是VPN的问题(openVZ , debian ,buyVM)

还是VPN的问题(openVZ , debian ,buyVM)

昨天发了一个微博,说是buyvm上面的VPN很容易装。非常方便,只要下载一个脚本包就OK了。
但是我用了之后还是发现没有用。。能连得上,但是上不了网,而且在/etc/ppp/pptpd-option里也设置了ms-dns,为什么上不了网呢?

找了一下,突然发现,/etc/pptpd.conf里就剩两行内容了,localip和remoteip,奇怪那怎么加载option呢???
对比了一下老文件,是有这么一行的:option /etc/ppp/pptpd-options
所以,立刻将这一行加入,OK,可以上网了,但是这时候还不支持加密。。如果选择了加密,就无法登录
再看/ppp/pptpd-options,居然也只有2行ms-dns的配置。连name什么的都没有,怪不得我刚才加的用户选择了服务名称为pptpd的时候都不能连接上网。我晕啊

对着原有的文件,加入:

name pptpd
refuse-pap
refuse-chap
#refuse-mschap
require-mschap-v2
require-mppe-128


proxyarp
nodefaultroute
lock
nobsdcomp

再重启一下/etc/init.d/pptpd restart,一切都正常了。这些人啊。为了偷懒,也不能这样啊,心哇凉哇凉的,果然不可尽信一键包。下次我也来做一个一键包算了。。。NND

笔记:为虚拟机再挂载一块虚拟硬盘

笔记:为虚拟机再挂载一块虚拟硬盘

原来的虚拟机只分配了8G空间,用啊用啊的就满了。怎么办?
于是想过挂载硬盘,但是不太会弄,今天在hover(http://www.hoverlees.com/blog/)的帮助下,搞定了。

1、fdisk -l,看看挂载进来的硬件是什么?

Disk /dev/sda: 8589 MB, 8589935104 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777217 sectors
Units = sectors of 1 * 512512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006642a

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 16775167 8136705 5 Extended
/dev/sda5 501760 16775167 8136704 8e Linux LVM

Disk /dev/sdb: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors
Units = sectors of 1 * 512512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/mapper/webserver-root: 7763 MB, 7763656704 bytes
255 heads, 63 sectors/track, 943 cylinders, total 15163392 sectors
Units = sectors of 1 * 512512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/webserver-root doesn't contain a valid partition table

Disk /dev/mapper/webserver-swap_1: 532 MB, 532676608 bytes
255 heads, 63 sectors/track, 64 cylinders, total 1040384 sectors
Units = sectors of 1 * 512512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/webserver-swap_1 doesn't contain a valid partition table



2、将上面的红色部分的设备先格式化成某一类型的盘,输入:“mkfs.” 然后按TAB,出现:
mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev
为了更通用一点,我还是用了Ext3,所以我后来输入:mkfs.ext3 /dev/sdb1,返回:

mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1572864 inodes, 6291200 blocks
314560 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
192 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

3、mount到一个目录下,

root@webserver:/mnt# mount /dev/sdb1 /mnt

4、然后df看一下结果:

root@webserver:/mnt# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/webserver-root
7462608 4930416 2153108 70% /
udev 246512 4 246508 1% /dev
tmpfs 101524 576 100948 1% /run
none 5120 0 5120 0% /run/lock
none 253808 0 253808 0% /run/shm
/dev/sda1 233191 154710 66040 71% /boot
/dev/sdb1 24769916 176196 23335480 1% /mnt

一切就这样的完成了。
做个笔记。。。

成功利用apache对内容进行替换[更新]

成功利用apache对内容进行替换[更新]

说是成功了,但其实最终我还是通过PHP来实现的,因为遇到的问题是对方是gzip后的数据,无法直接替换,只能用php先将gzip的内容解压开,替换完后再gzip输出。
头疼。

参考:apache的mod_ext_filter,这个是功能比较强悍的替换模块了
nginx下当然也有更好的。不过因为我的服务器目前用的是apache。而且我习惯了用apache的一些配置,一下子要换到nginx不太习惯。
以后慢慢考虑吧。

---------

如果用PHP做,有些网站的gzip无法用:gzuncompress,gzinflate,gzdecode解压的。
可以用这个函数:http://www.jb51.net/article/15262.htm,原网站没有格式化,所以我格式化了一下:

function gzdecode2($data) {
$flags = ord(substr($data, 3, 1));
$headerlen = 10;
$extralen = 0;
$filenamelen = 0;
if ($flags & 4) {
$extralen = unpack('v', substr($data, 10, 2));
$extralen = $extralen[1];
$headerlen += 2 + $extralen;
}
if ($flags & 8) // Filename
{
$headerlen = strpos($data, chr(0), $headerlen) + 1;
}
if ($flags & 16) // Comment
{
$headerlen = strpos($data, chr(0), $headerlen) + 1;
}
if ($flags & 2) // CRC at end of file
{
$headerlen += 2;
}
$unpacked = @gzinflate(substr($data, $headerlen));
if ($unpacked === FALSE) {
$unpacked = $data;
}
return $unpacked;
}
这回就可以了。。。
安装VPN。。。debian / centos

安装VPN。。。debian / centos

说实话,xen和openVZ安装VPN我真的不是特别了解 ,以前只知道openVZ默认不能装,因为没有ppp和tun设备,但即使有了ppp和tun设备 后,其实,iptables的NAT转发也不是每台机器 都支持。
我在cloud3k上的VPS后台里可以安装ppp和tun设备 ,但安装后无效,发了一个TK给客服,客服说是开通了NAT转发。然后就OK了。
但网上的一些教程中的iptables其实都不能用。因为那句: /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE,其实是针对xen的VPS的。openVZ根本 就没有MASQUERADE这类的用法,而且。。。eth0,在openVZ上都没有。只有venet0。所以,我又找了一些资料,比如 :
1、http://qiaodahai.com/personal/article/2012/centos-6-pptpd-one-key-installation.htm
2、服务器架设:PPTPD VPN一键安装包 For CentOS 5
3、BuyVM OpenVZ VPS Debian安装PPTP VPN

其实现在网上有openVZ的一键安装包,我这里就不多介绍了,google一下或者百度一下,N多。
安装完后就三个功能
1、安装pptpd服务
2、修复pptpd服务
3、设置帐号
非常方便。但设置帐号后一定要去chep-secrets文件里看一下,理论上是可能有一个所谓的默认帐户存在的。注意删除一下。

二手商品出售

多年以来,慢慢慢慢集成了N多的工手商品,有兴趣的朋友可以向我购买,(所有商品均可小刀)

1、nook2 ,可触摸的电子书(可刷android系统),我买的时候 1200,实际使用时间不超过24小时,要说成色嘛,还算新吧。。。现在嘛 ,明显不要这个价了,可以看淘宝价后再小刀我【已出】

2、蓝牙键盘,本以为是一个很大的键盘,可以让电脑用的,结果。买回来才发现是IPAD和iphone用的。纠结
http://item.51buy.com/item-202961.html ,购买时间2012-06-28
【已出】

3、HP 5510(hp的瘦客户端),可以用来玩的,装的是winCE,可以直接运行。耗电量不高,但我好象没电源了。所以。。。

4、福珑电脑,龙芯第一代,内存加过,如果你有兴趣玩玩这个系统倒是可以的,当年,我买了1800,现在嘛 ,你懂的。都4年过去了。。。。如果你怀旧,可以考虑

5、家中的沙发(这个只限上海地区,可当床,原来是为了新房入住的时候买的,当年买的时候750,不过已经N年了,也没有好好的用过它),如果你有兴趣,可以大刀,但需自提。。

6、对了,还有gameboy advance,有两盘卡带,恶魔城+KOF,这么多年没用,好象卡带有问题了。当年买了600,现在嘛。黑黑。。。而且GA居然是没有夜光屏的,如果你对旧机有收藏,可以考虑。同1一样,实际使用时间不超过50小时,算是一个比较纠结的东西。

其实还有好多,一下子想不起来了都。。有兴趣可以直接留言啊。哈哈

-------

2012-12-11新增:

1、iphone/ipad 的蓝牙上网设备(类似苹果皮,不过它是蓝牙的。可以插双卡),使用时需越狱。当时淘宝买的时候300多。现在嘛,其实价格没大跌,如果有兴趣玩的人倒是可以收。因为我升到6.0.1不太想越狱了。而且现在也花钱买了很多正版的软件。越狱不太想了。正规点