手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2012年10月的文章

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

Tags: busybox, uis2000

IFTTT

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

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

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

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

Tags: ifttt

Linux运维常用命令

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

看了一下图,确实很常用。
大小: 576.13 K
尺寸: 35 x 376
浏览: 1243 次
点击打开新窗口浏览全图

XML/HTML代码
  1. 1.删除0字节文件  
  2. find-type f -size 0 -exec rm -rf {} ;  
  3.   
  4. 2.查看进程  
  5. 按内存从大到小排列  
  6. ps -e -o "%C : %p : %z : %a"|sort -k5 -nr  
  7.   
  8. 3.按cpu利用率从大到小排列  
  9. ps -e -o "%C : %p : %z : %a"|sort -nr  
  10.   
  11. 4.打印说cache里的URL  
  12. grep -r -a jpg /data/cache/* | strings | grep "http:" |awk-F'http:' '{print "http:"$2;}'  
  13.   
  14. 5.查看http的并发请求数及其TCP连接状态:  
  15. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  
  16.   
  17. 6.sed-i '/Root/s/no/yes/' /etc/ssh/sshd_config sed在这个文里Root的一行,匹配Root一行,将no替换成yes.  
  18.   
  19. 7.1.如何杀掉mysql进程:  
  20. ps aux |grep mysql |grep -v grep|awk '{print $2}' |xargs kill -9 (从中了解到awk的用途)  
  21.   
  22. killall -TERM mysqld  
  23.   
  24. kill -9 `cat /usr/local/apache2/logs/httpd.pid`试试查杀进程PID  
  25.   
  26. 8.显示运行3级别开启的服务:  
  27. ls /etc/rc3.d/S* |cut-c 15- (从中了解到cut的用途,截取数据)  
  28.   
  29. 9.如何在编写SHELL显示多个信息,用EOF  
  30. cat << EOF  
  31. +--------------------------------------------------------------+  
  32. | === Welcome to Tunoff services === |  
  33. +--------------------------------------------------------------+  
  34. EOF  
  35.   
  36. 10. for的巧用(如给mysql建软链接)  
  37. cd /usr/local/mysql/bin  
  38. for i in *  
  39. do ln /usr/local/mysql/bin/$i /usr/bin/$i  
  40. done  
  41.   
  42. 11.取IP地址:  
  43. ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-或者  
  44.   
  45. ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'  
  46.   
  47. 12.内存的大小:  
  48. free -m |grep "Mem" | awk '{print $2}'  
  49.   
  50. 13.  
  51. netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %sn",$5,$6}' | sort  
  52.   
  53. 14.查看Apache的并发请求数及其TCP连接状态:  
  54. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  
  55.   
  56. 15.因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦.  
  57. find / -name *.jpg -exec wc -c {} ;|awk '{print $1}'|awk '{a+=$1}END{print a}'  
  58.   
  59. CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。  
  60.   
  61. ---------------------------------------------------------------------------------------  
  62. 16 CPU负载 # cat /proc/loadavg  
  63. 检查前三个输出值是否超过了系统逻辑CPU的4倍。  
  64.   
  65. 18 CPU负载 #mpstat 1 1  
  66. 检查%idle是否过低(比如小于5%)  
  67.   
  68. 19内存空间 # free  
  69. 检查free值是否过低也可以用# cat /proc/meminfo  
  70.   
  71. 20 swap空间 # free  
  72. 检查swap used值是否过高如果swap used值过高,进一步检查swap动作是否频繁:  
  73. # vmstat 1 5  
  74. 观察si和so值是否较大  
  75.   
  76. 21磁盘空间 # df -h  
  77. 检查是否有分区使用率(Use%)过高(比如超过90%)如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录:  
  78. # du -cks * | sort -rn | head -n 10  
  79.   
  80. 22磁盘I/O负载 # iostat -x 1 2  
  81. 检查I/O使用率(%util)是否超过100%  
  82.   
  83. 23网络负载 # sar -n DEV  
  84. 检查网络流量(rxbyt/s, txbyt/s)是否过高  
  85.   
  86. 24网络错误 # netstat -i  
  87. 检查是否有网络错误(drop fifo colls carrier)也可以用命令:# cat /proc/net/dev  
  88.   
  89. 25网络连接数目 # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n  
  90.   
  91. 26进程总数 # ps aux | wc -l  
  92. 检查进程个数是否正常(比如超过250)  
  93.   
  94. 27可运行进程数目 # vmwtat 1 5  
  95. 列给出的是可运行进程的数目,检查其是否超过系统逻辑CPU的4倍  
  96.   
  97. 28进程 # top -id 1  
  98. 观察是否有异常进程出现  
  99.   
  100. 29网络状态检查DNS,网关等是否可以正常连通  
  101.   
  102. 30用户 # who | wc -l  
  103. 检查登录用户是否过多(比如超过50个)也可以用命令:# uptime  
  104.   
  105. 31系统日志 # cat /var/log/rflogview/*errors  
  106. 检查是否有异常错误记录也可以搜寻一些异常关键字,例如:  
  107. # grep -i error /var/log/messages  
  108. # grep -i fail /var/log/messages  
  109.   
  110. 32核心日志 # dmesg  
  111. 检查是否有异常错误记录  
  112.   
  113. 33系统时间 # date  
  114. 检查系统时间是否正确  
  115.   
  116. 34打开文件数目 # lsof | wc -l  
  117. 检查打开文件总数是否过多  
  118.   
  119. 35日志 # logwatch –print配置/etc/log.d/logwatch.conf,将Mailto设置为自己的email地址,启动mail服务(sendmail或者postfix),这样就可以每天收到日志报告了。  
  120. 缺省logwatch只报告昨天的日志,可以用# logwatch –print –range all获得所有的日志分析结果。  
  121. 可以用# logwatch –print –detail high获得更具体的日志分析结果(而不仅仅是出错日志)。  
  122.   
  123. 36.杀掉80端口相关的进程  
  124. lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh  
  125.   
  126. 37.清除僵死进程。  
  127. ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9  
  128.   
  129. 38.tcpdump抓包,用来防止80端口被人攻击时可以分析数据  
  130. # tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts  
  131.   
  132. 39.然后检查IP的重复数并从小到大排序注意"-t +0"中间是两个空格  
  133. # less pkts | awk {'printf $3"n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"n"'} | sort -n -t +0  
  134.   
  135. 40.查看有多少个活动的php-cgi进程  
  136. netstat -anp | grep php-cgi | grep ^tcp | wc -l  
  137.   
  138. chkconfig --list | awk '{if ($5=="3:on") print $1}'  
  139.   
  140. 41.kudzu查看网卡型号  
  141. kudzu --probe --class=network  
  142.   
  143. 匹配中文字符的正则表达式:[u4e00-u9fa5]  
  144. 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  
  145.   
  146. 匹配双字节字符(包括汉字在内):[^x00-xff]  
  147. 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)  
  148.   
  149. 匹配空白行的正则表达式:ns*r  
  150. 评注:可以用来删除空白行  
  151.   
  152. 匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />  
  153. 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力  
  154.   
  155. 匹配首尾空白字符的正则表达式:^s*|s*$  
  156. 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式  
  157.   
  158. 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*  
  159. 评注:表单验证时很实用  
  160.   
  161. 匹配网址URL的正则表达式:[a-zA-z]+://[^s]*  
  162. 评注:网上流传的版本功能很有限,上面这个基本可以满足需求  
  163.   
  164. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$  
  165. 评注:表单验证时很实用  
  166.   
  167. 匹配国内电话号码:d{3}-d{8}|d{4}-d{7}  
  168. 评注:匹配形式如0511-4405222或021-87888822  
  169.   
  170. 匹配腾讯QQ号:[1-9][0-9]{4,}  
  171. 评注:腾讯QQ号从10000开始  
  172.   
  173. 匹配中国邮政编码:[1-9]d{5}(?!d)  
  174. 评注:中国邮政编码为6位数字  
  175.   
  176. 匹配身份证:d{15}|d{18}  
  177. 评注:中国的身份证为15位或18位  
  178.   
  179. 匹配ip地址:d+.d+.d+.d+  
  180.   
  181. 评注:提取ip地址时有用  
  182.   
  183. 匹配特定数字:  
  184. ^[1-9]d*$  //匹配正整数  
  185. ^-[1-9]d*$ //匹配负整数  
  186. ^-?[1-9]d*$  //匹配整数  
  187. ^[1-9]d*|0$ //匹配非负整数(正整数+ 0)  
  188. ^-[1-9]d*|0$  //匹配非正整数(负整数+ 0)  
  189. ^[1-9]d*.d*|0.d*[1-9]d*$  //匹配正浮点数  
  190. ^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数  
  191. ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数  
  192. ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$  //匹配非负浮点数(正浮点数+ 0)  
  193. ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数+ 0)  
  194. 评注:处理大量数据时有用,具体应用时注意修正  
  195.   
  196. 匹配特定字符串:  
  197. ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串  
  198. ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串  
  199. ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串  
  200. ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串  
  201. ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串  
  202. 评注:最基本也是最常用的一些表达式  

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

记忆中的片段

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

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

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

又是VPN手记。。。

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

XML/HTML代码
  1. #!/bin/bash  
  2.   
  3. function installVPN(){  
  4.         apt-get update  
  5.         #remove ppp pptpd  
  6.         rm -rf /etc/pptpd.conf  
  7.         rm -rf /etc/ppp  
  8.         apt-get -y remove ppp pptpd  
  9.         apt-get -y install ppp pptpd iptables  
  10.   
  11.         #注意,这里的一些refuse-pap之类的要注意,如果不能连接首先改这里。  
  12.         #如果一直出错,将require-mschap-v2和require-mppe-128 这两行加密注释掉,(对应源文件)  
  13.         echo name pptpd >> /etc/ppp/pptpd-options  
  14.         echo refuse-pap >> /etc/ppp/pptpd-options  
  15.         echo refuse-chap >> /etc/ppp/pptpd-options  
  16.         #refuse-mschap  
  17.         echo require-mschap-v2 >> /etc/ppp/pptpd-options  
  18.         echo require-mppe-128 >> /etc/ppp/pptpd-options  
  19.         echo proxyarp >> /etc/ppp/pptpd-options  
  20.         echo nodefaultroute >> /etc/ppp/pptpd-options  
  21.         echo lock >> /etc/ppp/pptpd-options  
  22.         echo nobsdcomp >> /etc/ppp/pptpd-options  
  23.   
  24.   
  25.         echo ms-dns 8.8.8.8 >> /etc/ppp/pptpd-options  
  26.         echo ms-dns 8.8.4.4 >> /etc/ppp/pptpd-options  
  27.         echo ms-dns 4.3.2.1 >> /etc/ppp/pptpd-options  
  28.   
  29.         #写到pptpd.conf文件中  
  30.         echo option /etc/ppp/pptpd-options >> /etc/pptpd.conf  
  31.         echo logwtmp >> /etc/pptpd.conf  
  32.         echo localip 192.168.99.1 >> /etc/pptpd.conf  
  33.         echo remoteip 192.168.99.9-99 >> /etc/pptpd.conf  
  34.   
  35.         #这个最好只能处理一次。否则每次都会修改,以防万一,改两次吧。。第一次应该失败  
  36.         sed -i 's/#net\.ipv4.ip_forward=0/net\.ipv4.ip_forward=1/' /etc/sysctl.conf  
  37.         sed -i 's/#net\.ipv4.ip_forward=1/net\.ipv4.ip_forward=1/' /etc/sysctl.conf  
  38.         #echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf  
  39.         sysctl -p  
  40.         #以下内容是for OPENVZ  
  41.         #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}'`  
  42.         #sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local  
  43.   
  44.         #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  
  45.         #echo exit 0 >> /etc/rc.local  
  46.   
  47.           
  48.   
  49.         # --- the sentence below was remarked By yanwen ,  what are you doing ??-----  
  50.   
  51. }  
  52.   
  53. function installOpenVZ(){  
  54.         (installVPN)  
  55.         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}'`  
  56.         sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local  
  57.   
  58.         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  
  59.         echo exit 0 >> /etc/rc.local  
  60.         (setDefaultUser)  
  61. }  
  62. function installXen(){  
  63.         (installVPN)  
  64.         iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE  
  65.         sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local  
  66.   
  67.         echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE >> /etc/rc.local  
  68.         echo exit 0 >> /etc/rc.local  
  69.         (setDefaultUser)  
  70. }  
  71.   
  72. function setDefaultUser(){  
  73.         #默认用户  
  74.         echo gouki \* 123456 \* >> /etc/ppp/chap-secrets  
  75.         /etc/init.d/pptpd restart  
  76. }  
  77.   
  78. function repaireVPN(){  
  79.         echo "begin to repaire VPN";  
  80.         mknod /dev/ppp c 108 0  
  81.         /etc/init.d/pptpd restart  
  82. }  
  83.   
  84. function addVPNuser(){  
  85.         echo "input user name:"  
  86.         read username  
  87.         echo "input password:"  
  88.         read userpassword  
  89.         echo "${username} pptpd ${userpassword} *" >> /etc/ppp/chap-secrets  
  90.         /etc/init.d/pptpd restart  
  91. }  
  92. function disableEncyption(){  
  93.         sed -i 's/^require-mschap-v2/#require-mschap-v2/' /etc/ppp/pptpd-options  
  94.         sed -i 's/^require-mppe-128/#require-mppe-128/' /etc/ppp/pptpd-options  
  95.         /etc/init.d/pptpd restart  
  96. }  
  97. function enableEncyption(){  
  98.         sed -i 's/^#require-mschap-v2/require-mschap-v2/' /etc/ppp/pptpd-options  
  99.         sed -i 's/^#require-mppe-128/require-mppe-128/' /etc/ppp/pptpd-options  
  100.         /etc/init.d/pptpd restart  
  101. }  
  102. echo "which do you want to?input the number."  
  103. echo "1. install Xen VPN service"  
  104. echo "2. install OpenVz VPN service"  
  105. echo "3. repaire VPN service"  
  106. echo "4. add VPN user"  
  107. echo "5. disable encryption"  
  108. echo "6. disable encryption"  
  109. read num  
  110.   
  111. case "$num" in  
  112. [1] ) (installXen);;  
  113. [2] ) (installOpenVZ);;  
  114. [3] ) (repaireVPN);;  
  115. [4] ) (addVPNuser);;  
  116. [5] ) (disableEncyption);;  
  117. [6] ) (enableEncyption);;  
  118. *) echo "nothing,exit";;  
  119. esac  

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

Tags: vpn

Records:331234567