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

记忆中的片段

在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

还是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的时候都不能连接上网。我晕啊

对着原有的文件,加入:

XML/HTML代码
  1. name pptpd  
  2. refuse-pap  
  3. refuse-chap  
  4. #refuse-mschap  
  5. require-mschap-v2  
  6. require-mppe-128  
  7.   
  8.   
  9. proxyarp  
  10. nodefaultroute  
  11. lock  
  12. nobsdcomp  

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

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

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

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

XML/HTML代码
  1. Disk /dev/sda: 8589 MB, 8589935104 bytes  
  2. 255 heads, 63 sectors/track, 1044 cylinders, total 16777217 sectors  
  3. Units = sectors of 1 * 512512 = 512 bytes  
  4. Sector size (logical/physical): 512 bytes / 512 bytes  
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  6. Disk identifier: 0x0006642a  
  7.   
  8.    Device Boot      Start         End      Blocks   Id  System  
  9. /dev/sda1   *        2048      499711      248832   83  Linux  
  10. /dev/sda2          501758    16775167     8136705    5  Extended  
  11. /dev/sda5          501760    16775167     8136704   8e  Linux LVM  
  12.   
  13. Disk /dev/sdb: 25.8 GB, 25769803776 bytes  
  14. 255 heads, 63 sectors/track, 3133 cylinders, total 50331648 sectors  
  15. Units = sectors of 1 * 512512 = 512 bytes  
  16. Sector size (logical/physical): 512 bytes / 512 bytes  
  17. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  18. Disk identifier: 0x00000000  
  19.   
  20. Disk /dev/sdb doesn't contain a valid partition table  
  21.   
  22. Disk /dev/mapper/webserver-root: 7763 MB, 7763656704 bytes  
  23. 255 heads, 63 sectors/track, 943 cylinders, total 15163392 sectors  
  24. Units = sectors of 1 * 512512 = 512 bytes  
  25. Sector size (logical/physical): 512 bytes / 512 bytes  
  26. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  27. Disk identifier: 0x00000000  
  28.   
  29. Disk /dev/mapper/webserver-root doesn't contain a valid partition table  
  30.   
  31. Disk /dev/mapper/webserver-swap_1: 532 MB, 532676608 bytes  
  32. 255 heads, 63 sectors/track, 64 cylinders, total 1040384 sectors  
  33. Units = sectors of 1 * 512512 = 512 bytes  
  34. Sector size (logical/physical): 512 bytes / 512 bytes  
  35. I/O size (minimum/optimal): 512 bytes / 512 bytes  
  36. Disk identifier: 0x00000000  
  37.   
  38. 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,返回:

XML/HTML代码
  1. mke2fs 1.41.14 (22-Dec-2010)  
  2. Filesystem label=  
  3. OS type: Linux  
  4. Block size=4096 (log=2)  
  5. Fragment size=4096 (log=2)  
  6. Stride=0 blocks, Stripe width=0 blocks  
  7. 1572864 inodes, 6291200 blocks  
  8. 314560 blocks (5.00%) reserved for the super user  
  9. First data block=0  
  10. Maximum filesystem blocks=0  
  11. 192 block groups  
  12. 32768 blocks per group, 32768 fragments per group  
  13. 8192 inodes per group  
  14. Superblock backups stored on blocks:  
  15.     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,  
  16.     4096000  
  17.   
  18. Writing inode tables: done                             
  19. Creating journal (32768 blocks): done  
  20. Writing superblocks and filesystem accounting information: done  
  21.   
  22. This filesystem will be automatically checked every 32 mounts or  
  23. 180 days, whichever comes first.  Use tune2fs -c or -i to override.  

3、mount到一个目录下,

XML/HTML代码
  1. root@webserver:/mnt# mount /dev/sdb1 /mnt  

4、然后df看一下结果:

XML/HTML代码
  1. root@webserver:/mnt# df   
  2. Filesystem           1K-blocks      Used Available Use% Mounted on  
  3. /dev/mapper/webserver-root  
  4.                        7462608   4930416   2153108  70% /  
  5. udev                    246512         4    246508   1% /dev  
  6. tmpfs                   101524       576    100948   1% /run  
  7. none                      5120         0      5120   0% /run/lock  
  8. none                    253808         0    253808   0% /run/shm  
  9. /dev/sda1               233191    154710     66040  71% /boot  
  10. /dev/sdb1             24769916    176196  23335480   1% /mnt  

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

成功利用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,原网站没有格式化,所以我格式化了一下:

PHP代码
  1. function gzdecode2($data) {  
  2.     $flags = ord(substr($data, 3, 1));  
  3.     $headerlen = 10;  
  4.     $extralen = 0;  
  5.     $filenamelen = 0;  
  6.     if ($flags & 4) {  
  7.         $extralen = unpack('v'substr($data, 10, 2));  
  8.         $extralen = $extralen[1];  
  9.         $headerlen += 2 + $extralen;  
  10.     }  
  11.     if ($flags & 8) // Filename  
  12.     {  
  13.         $headerlen = strpos($datachr(0), $headerlen) + 1;  
  14.     }  
  15.     if ($flags & 16) // Comment  
  16.     {  
  17.         $headerlen = strpos($datachr(0), $headerlen) + 1;  
  18.     }  
  19.     if ($flags & 2) // CRC at end of file  
  20.     {  
  21.         $headerlen += 2;  
  22.     }  
  23.     $unpacked = @gzinflate(substr($data$headerlen));  
  24.     if ($unpacked === FALSE) {  
  25.         $unpacked = $data;  
  26.     }  
  27.     return $unpacked;  
  28. }  
这回就可以了。。。