﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-stone2083-随笔分类-linux</title><link>http://www.blogjava.net/stone2083/category/28156.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 Oct 2015 09:19:37 GMT</lastBuildDate><pubDate>Thu, 22 Oct 2015 09:19:37 GMT</pubDate><ttl>60</ttl><item><title>docker overlay network</title><link>http://www.blogjava.net/stone2083/archive/2015/10/21/427854.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Wed, 21 Oct 2015 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2015/10/21/427854.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/427854.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2015/10/21/427854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/427854.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/427854.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: docker overlay network&nbsp;&nbsp;<a href='http://www.blogjava.net/stone2083/archive/2015/10/21/427854.html'>阅读全文</a><img src ="http://www.blogjava.net/stone2083/aggbug/427854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2015-10-21 15:14 <a href="http://www.blogjava.net/stone2083/archive/2015/10/21/427854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>四张图了解iptables原理和使用</title><link>http://www.blogjava.net/stone2083/archive/2015/05/08/424946.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Fri, 08 May 2015 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2015/05/08/424946.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/424946.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2015/05/08/424946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/424946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/424946.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 四张图了解iptables原理和使用&nbsp;&nbsp;<a href='http://www.blogjava.net/stone2083/archive/2015/05/08/424946.html'>阅读全文</a><img src ="http://www.blogjava.net/stone2083/aggbug/424946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2015-05-08 13:01 <a href="http://www.blogjava.net/stone2083/archive/2015/05/08/424946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mykeepass for command line</title><link>http://www.blogjava.net/stone2083/archive/2014/11/06/419598.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Thu, 06 Nov 2014 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2014/11/06/419598.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/419598.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2014/11/06/419598.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/419598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/419598.html</trackback:ping><description><![CDATA[命令行下的类似keepass一个东东.<br /><br /><strong>如何使用</strong><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Command&nbsp;line&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;Keep&nbsp;Password.<br />Usage:<br />&nbsp;&nbsp;keepass.sh&nbsp;-l<br />&nbsp;&nbsp;keepass.sh&nbsp;-e&nbsp;plain-text<br />&nbsp;&nbsp;keepass.sh&nbsp;-d&nbsp;encoded-text<br />&nbsp;&nbsp;keepass.sh&nbsp;-s&nbsp;encoded-text&nbsp;name</div><br /><strong>-l<br /></strong>展示保存下所有加密后的密码信息<br /><strong>-e<br /></strong>将明文密码, 加密, 密文自动保存到剪切板上<br /><strong>-d<br /></strong>将密文界面, 解密后的明文自动保存到剪切板上<br /><strong>-s<br /></strong>将密文持久化保存到文件中<br /><br /><strong>代码实现<br /></strong><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">!/bin/sh</span><span style="color: #008000; "><br /></span><br />DATA=<span style="color: #800000; ">"</span><span style="color: #800000; ">$HOME/.password/data</span><span style="color: #800000; ">"</span><br />declare&nbsp;-a&nbsp;passwords<br /><br />function&nbsp;enc()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">$1:&nbsp;plain&nbsp;text</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$1</span><span style="color: #800000; ">"</span>&nbsp;|&nbsp;openssl&nbsp;enc&nbsp;-des&nbsp;|&nbsp;base64<br />}<br /><br />function&nbsp;dec()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">$1:&nbsp;encoded&nbsp;text</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$1</span><span style="color: #800000; ">"</span>&nbsp;|&nbsp;base64&nbsp;-D&nbsp;|&nbsp;openssl&nbsp;enc&nbsp;-des&nbsp;-d<br />}<br /><br />function&nbsp;sync()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;((loop=0;loop&lt;${<span style="color: #008000; ">#</span><span style="color: #008000; ">passwords[*]};loop++))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;[&nbsp;-z&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">${passwords[$loop]}</span><span style="color: #800000; ">"</span>&nbsp;];then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=<span style="color: #800000; ">"</span><span style="color: #800000; ">$value\n${passwords[$loop]}</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;done<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$value&nbsp;&gt;&nbsp;$DATA<br />}<br /><br />function&nbsp;save()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">$1&nbsp;encoded&nbsp;password</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">$2&nbsp;name</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;((loop=0;&nbsp;loop&lt;${<span style="color: #008000; ">#</span><span style="color: #008000; ">passwords[*]};&nbsp;loop++))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info=${passwords[$loop]}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password=$(echo&nbsp;$info&nbsp;|&nbsp;awk&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">{print&nbsp;$1}</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name=$(echo&nbsp;$info&nbsp;|&nbsp;awk&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">{print&nbsp;$2}</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;[&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$2</span><span style="color: #800000; ">"</span>&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$name</span><span style="color: #800000; ">"</span>&nbsp;];then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwords[$loop]=<span style="color: #800000; ">"</span><span style="color: #800000; ">$1&nbsp;$2</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />&nbsp;&nbsp;&nbsp;&nbsp;done<br />&nbsp;&nbsp;&nbsp;&nbsp;passwords[$loop]=<span style="color: #800000; ">"</span><span style="color: #800000; ">$1&nbsp;$2</span><span style="color: #800000; ">"</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sync<br />}<br /><br />function&nbsp;delete()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">$1:&nbsp;name</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;((loop=0;&nbsp;loop&lt;${<span style="color: #008000; ">#</span><span style="color: #008000; ">passwords[*]};&nbsp;loop++))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info=${passwords[$loop]}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password=$(echo&nbsp;$info&nbsp;|&nbsp;awk&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">{print&nbsp;$1}</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name=$(echo&nbsp;$info&nbsp;|&nbsp;awk&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">{print&nbsp;$2}</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;[&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$1</span><span style="color: #800000; ">"</span>&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$name</span><span style="color: #800000; ">"</span>&nbsp;];then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwords[$loop]=<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />&nbsp;&nbsp;&nbsp;&nbsp;done<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sync<br />}<br /><br />function&nbsp;list()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;((loop=0;loop&lt;${<span style="color: #008000; ">#</span><span style="color: #008000; ">passwords[*]};loop++))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;${passwords[$loop]}<br />&nbsp;&nbsp;&nbsp;&nbsp;done<br />}<br /><br />function&nbsp;help()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Command&nbsp;line&nbsp;for&nbsp;Keep&nbsp;Password.</span><span style="color: #800000; "><br /></span>Usage:<br />&nbsp;&nbsp;keepass.sh&nbsp;-l<br />&nbsp;&nbsp;keepass.sh&nbsp;-e&nbsp;plain-text<br />&nbsp;&nbsp;keepass.sh&nbsp;-d&nbsp;encoded-text<br />&nbsp;&nbsp;keepass.sh&nbsp;-s&nbsp;encoded-text&nbsp;name<span style="color: #800000; ">"<br /></span>}<br /><br />function&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;loop=0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;read&nbsp;line<br />&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;[&nbsp;-z&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$line</span><span style="color: #800000; ">"</span>&nbsp;];then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fi<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwords[$loop]=$line<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop=$(echo&nbsp;$loop+1&nbsp;|&nbsp;bc)<br />&nbsp;&nbsp;&nbsp;&nbsp;done&nbsp;&lt;&nbsp;$DATA<br />}<br /><br />init<br />case&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$1</span><span style="color: #800000; ">"</span>&nbsp;<span style="color: #0000FF; ">in</span><br />&nbsp;&nbsp;&nbsp;&nbsp;-l)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />&nbsp;&nbsp;&nbsp;&nbsp;-e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enc&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$2</span><span style="color: #800000; ">"</span>&nbsp;|&nbsp;tr&nbsp;-d&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span>&nbsp;|&nbsp;pbcopy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />&nbsp;&nbsp;&nbsp;&nbsp;-d)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dec&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$2</span><span style="color: #800000; ">"</span>&nbsp;|&nbsp;tr&nbsp;-d&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span>&nbsp;|&nbsp;pbcopy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />&nbsp;&nbsp;&nbsp;&nbsp;-s)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;save&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$2</span><span style="color: #800000; ">"</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$3</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />&nbsp;&nbsp;&nbsp;&nbsp;-r)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">$2</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />&nbsp;&nbsp;&nbsp;&nbsp;*)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;help<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;<br />esac</div><br />备注:<br />1. 纯shell打造<br />2. 目前支持Mac shell, 理论上支持linux系统(唯一的改动, 把pbcopy改成linux下剪切板复制的命令即可)<br /><br /><br /><img src ="http://www.blogjava.net/stone2083/aggbug/419598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2014-11-06 14:45 <a href="http://www.blogjava.net/stone2083/archive/2014/11/06/419598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分享几个小工具--推荐给Linux的用户</title><link>http://www.blogjava.net/stone2083/archive/2013/03/19/396660.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Tue, 19 Mar 2013 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2013/03/19/396660.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/396660.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2013/03/19/396660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/396660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/396660.html</trackback:ping><description><![CDATA[<div>自己写的几个小工具，分享给需要的人：<br /><br />https://code.google.com/p/stonelab/wiki/BaiduMp3<br />百度MP3批量下载工具<br /><br /><div>https://code.google.com/p/stonelab/wiki/FileConvertor<br />文件编码转换工具<br /><br /><div>https://code.google.com/p/stonelab/wiki/MyZip<br />扩展zip命令，支持文件名编码<br /><br /><div>https://code.google.com/p/stonelab/wiki/Translate<br />命令行下的翻译软件<br /><br /><div>https://code.google.com/p/stonelab/wiki/HostsX<br />扩展Hosts，别名DnsProxy，DNS代理服务</div></div></div></div></div><img src ="http://www.blogjava.net/stone2083/aggbug/396660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2013-03-19 15:12 <a href="http://www.blogjava.net/stone2083/archive/2013/03/19/396660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RaspCTL V0.1.0 Released</title><link>http://www.blogjava.net/stone2083/archive/2013/01/16/394311.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Wed, 16 Jan 2013 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2013/01/16/394311.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/394311.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2013/01/16/394311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/394311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/394311.html</trackback:ping><description><![CDATA[<h1 style="margin-top: 0px; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; "><font size="5">转自：https://code.google.com/p/stonelab/wiki/RaspCTL</font><br /><font size="2">COPY过来格式比较乱，将就地看吧。原文直接看googlecode wiki吧 ：）</font><br /><br /><font size="5">什么是RaspCTL</font><br />
<span style="font-size: x-large; font-weight: normal; "><span style="font-size: 13px; line-height: 1.25em; ">RaspCTL是Raspberry Pi和Control字母的组合，表示树莓派控制端。 RaspCTL是一款通过手机终端（泛义上包括手机，平板，电脑等设备）控制</span><a href="http://www.raspberrypi.org/" rel="nofollow" style="font-size: 13px; line-height: 1.25em; color: #0000cc; ">树莓派</a><span style="font-size: 13px; line-height: 1.25em; ">的软件。<br />
</span><span style="font-size: 13px; line-height: 1.25em; ">目前，通过Raspberry&amp;RaspCTL组合，打造成家庭多媒体播放机顶盒，在此场景中，RaspCTL非常类似</span><a href="http://xbmc.org/" rel="nofollow" style="font-size: 13px; line-height: 1.25em; color: #0000cc; ">XBMC</a><span style="font-size: 13px; line-height: 1.25em; ">平台。</span><span style="font-size: 13px; line-height: 1.25em; ">未来，会不断扩展RaspCTL功能，成为控制家庭物联网的设备中心，比如控制摄像头，空调开关等。此乃后话，按下不表。</span></span></h1>
<h1 style="font-size: x-large; margin-top: 0px; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; "><br />为什么选择Raspberry Pi&amp;RaspCTL<br /><span style="font-size: large; ">为什么选择Raspberry Pi</span></h1><h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">
<span style="font-size: 13px; line-height: 1.25em; font-weight: normal;">我们先来看看Raspberry Pi的相关参数：</span></h2>
<table class="wikitable" style="border-spacing: 0px; border-style: solid; border-color: #cccccc; color: #000000; font-family: arial, sans-serif; font-size: 13px; text-align: start; ">
     <tbody>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">CPU</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">700 MHz， ARM1176JZF-S</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">GPU（显卡）</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">Broadcom VideoCore<a href="https://code.google.com/p/stonelab/w/edit/VideoCore" style="color: #0000cc; ">?</a>&nbsp;IV，OpenGL ES 2.0， 1080p30 h.264/MPEG-4 AVC high-profile decoder</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">MEM（内存）</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">512M</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">分辨率</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">1080P</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">输出接口</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">1*SD口 2*USB口 1*音频口 1*HDMI口 1*网卡</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">尺寸</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">85.6 x 53.98 x 17mm （一张信用卡大小）</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">价格</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">$35</td>
         </tr>
     </tbody>
</table>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "></p>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><br />
好吧，一起来总结下Raspberry Pi的优势吧</p>
<ul style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">小巧：只有一张信用卡大小</li>
     <li style="margin-bottom: 0.3em; ">GPU强悍： 硬解1080P，30帧/S，通俗地将，差不多是iphone4S手机的2倍性能</li>
     <li style="margin-bottom: 0.3em; ">输出接口丰富： 包括2*USB，1*HDMI</li>
     <li style="margin-bottom: 0.3em; ">性价比高：$35<br />
     <br />
     <span style="line-height: 1.25em; ">从这些特性看，Raspberry非常合适充当高清视频播放机顶盒，来替代目前的华数机顶盒（华数官方垄断，费用高，质量差）。 家庭中，只要购置了Raspberry Pi和宽带，高清电影电视，免费看。 ：）</span></li>
</ul>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">为什么选择RaspCTL<br />
<span style="font-size: 13px; line-height: 1.25em; font-weight: normal;">只有一个原因：Raspberry Pi CPU很弱：700MHZ。 同样，我们来看一组数据：</span></h2>
<ul style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">Raspbian Terminal下 CPU LOAD在0.2左右</li>
     <li style="margin-bottom: 0.3em; ">Raspbian XWindows下， CPU占用率差不多在70%以上</li>
     <li style="margin-bottom: 0.3em; "><a href="http://xbian.org/" rel="nofollow" style="color: #0000cc; ">XBian</a>下，CPU占用率在95%以上<br /><span style="line-height: 1.25em; ">如果，Raspberry Pi CPU能强悍那么一点点，那么XBian一定是首选，我也不会重新创造RaspCTL这个轮子了。只是目前，XBMC在Raspberry Pi（XBian）上的性能太糟糕了。 从数据看，只有在Raspbian Terminal下的性能，才能符合用户的期望，所以作者编写了RaspCTL这个控制端。通过手机终端的界面，来操作Raspbian Terminal，实现多媒体播放的功能。</span></li></ul>
<h1 style="font-size: x-large; margin-top: 0px; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">RaspCTL(V0.1.0)功能特性</h1>
<ol style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">支持视屏，音频播放</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">支持播放，暂停，停止，快进，快退，播放列表，上一首，下一首等</li>
     </ul>
     <li style="margin-bottom: 0.3em; ">支持本地文件查看</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">查看多媒体文件</li>
     </ul>
     <li style="margin-bottom: 0.3em; ">配置系统信息</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">配置多媒体文件根路径等</li>
     </ul>
     <li style="margin-bottom: 0.3em; ">视频网站真实URL分析</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">支持包括优酷，土豆，迅雷，百度等82个网站视频URL分析</li>
     </ul>
     <li style="margin-bottom: 0.3em; ">制定Plugins规范</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">可非常方便开发RaspCTL Pugin</li>
     </ul>
</ol>
<h1 style="font-size: x-large; margin-top: 0px; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">使用者文档</h1>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">如何安装RaspCTL</h2>
<ol style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">下载<a href="http://stonelab.googlecode.com/files/raspctl-0.1.0.tar.gz" rel="nofollow" style="color: #0000cc; ">RaspCTL</a></li>
     <ol style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">下载，解压到指定目录</li>
         <li style="margin-bottom: 0.3em; ">或者直接使用svn地址： svn co&nbsp;<a href="https://stonelab.googlecode.com/svn/tags/raspctl-0.1.0" rel="nofollow" style="color: #0000cc; ">https://stonelab.googlecode.com/svn/tags/raspctl-0.1.0</a>&nbsp;RaspCTL</li>
     </ol>
     <li style="margin-bottom: 0.3em; ">安装RaspCTL</li>
     <ol style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">chmox +x bin/install.sh; bin/install.sh</li>
         <li style="margin-bottom: 0.3em; ">会自动安装RaspCTL依赖的第三方库，主要是python-webpy python-jinja2 python-pexpect依赖</li>
     </ol>
</ol>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">如何使用RaspCTL</h2>
<ol style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">启动RaspCTL服务</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">bin/start.sh</li>
         <li style="margin-bottom: 0.3em; ">启动后，在你手机浏览器上输入：</li>
         <li style="margin-bottom: 0.3em; "><a href="http://xxx.xxx.xxx.xxx:8000/config" rel="nofollow" style="color: #0000cc; ">http://xxx.xxx.xxx.xxx:8000/config</a>&nbsp;配置你树莓派上本地多媒体文件根目录</li>
         <li style="margin-bottom: 0.3em; "><a href="http://xxx.xxx.xxx.xxx:8000/player" rel="nofollow" style="color: #0000cc; ">http://xxx.xxx.xxx.xxx:8000/player</a>&nbsp;进入播放器</li>
         <li style="margin-bottom: 0.3em; ">点击添加，选择本地多媒体文件</li>
         <li style="margin-bottom: 0.3em; ">点击播放，暂停等功能</li>
     </ul>
     <li style="margin-bottom: 0.3em; ">关闭RaspCTL服务</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">bin/shutdown.sh</li>
     </ul>
</ol>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">常见问题</h2>
<ul style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">Q：如何自启动RaspCTL服务</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">将 bin/start.sh 配置到树莓派的/etc/rc.local exit之前。 同理，你在rc.local中可以启动其他任何服务；</li>
     </ul>
     <li style="margin-bottom: 0.3em; ">Q：如何使用80端口</li>
     <ul style="padding-left: 25px; max-width: 62em; ">
         <li style="margin-bottom: 0.3em; ">debian系统禁用了小于1024的端口，所以RaspCTL只有使用8000端口。可以通过iptable将80端口请求转发到8000端口： iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-ports 8080</li>
     </ul>
</ul>
<h1 style="font-size: x-large; margin-top: 0px; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">开发者文档</h1>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">类库API<br />
<br />
</h2>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><strong>Omxplayer</strong></p>
<table class="wikitable" style="border-spacing: 0px; border-style: solid; border-color: #cccccc; color: #000000; font-family: arial, sans-serif; font-size: 13px; text-align: start; ">
     <tbody>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">play</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">播放，可以指定播放列表中任一一个资源</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">pause</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">暂停播放</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">resume</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">恢复播放</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">stop</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">停止播放</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">lseek</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">快退， 快退30秒， 参数为True的话，快退10分钟</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">rseek</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">快进， 快进30秒，参数为True的话，快进10分钟</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">prev</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">播放上一首</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">next</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">播放下一首</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">set_playlist</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">设置播放列表</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">add_playitem</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">添加多媒体资源到播放列表中, 参数为 ('url', 'name') 资源地址， 资源显示名</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">del_playitem</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">清空播放列表</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">sort_playitem</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">播放列表排序</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">set_dev</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">设置输出设备， hdmi接口 或者 本地音频接口</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">set_loop</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">设置播放模式：顺序，循环</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">get_info</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">获取播放器信息，如播放状态等</td>
         </tr>
     </tbody>
</table>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "></p>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><strong>LocalFile<a href="https://code.google.com/p/stonelab/w/edit/LocalFile" style="color: #0000cc; ">?</a></strong></p>
<table class="wikitable" style="border-spacing: 0px; border-style: solid; border-color: #cccccc; color: #000000; font-family: arial, sans-serif; font-size: 13px; text-align: start; ">
     <tbody>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">get_mediapath</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">获得多媒体文件根目录路径</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">list</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">获取一个目录下的所有资源</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">list_all</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">递归获取一个目录下的所有资源</td>
         </tr>
     </tbody>
</table>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "></p>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><strong>Config</strong></p>
<table class="wikitable" style="border-spacing: 0px; border-style: solid; border-color: #cccccc; color: #000000; font-family: arial, sans-serif; font-size: 13px; text-align: start; ">
     <tbody>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">load</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">获取raspctl.cnf中的配置信息</td>
         </tr>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">save</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">更新raspctl.cnf中的配置信息</td>
         </tr>
     </tbody>
</table>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "></p>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><strong>MediaUrl<a href="https://code.google.com/p/stonelab/w/edit/MediaUrl" style="color: #0000cc; ">?</a></strong></p>
<table class="wikitable" style="border-spacing: 0px; border-style: solid; border-color: #cccccc; color: #000000; font-family: arial, sans-serif; font-size: 13px; text-align: start; ">
     <tbody>
         <tr>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">get_urls</td>
             <td style="border-style: solid; border-color: #cccccc; padding: 5px; ">获取网站url对应的真实视屏url地址信息， fmt=high 获取高清视屏地址</td>
         </tr>
     </tbody>
</table>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "></p>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">Ajax规范<br />
<br />
<span style="font-weight: normal;"><span style="font-size: 13px; line-height: 1.25em; ">使用Ajax的目的：为了RaspCTL提供的服务可以同时被WAP， Android APP, IOS APP使用，RaspCTL服务均以Ajax形式提供。希望Plugins开发者也遵照这个规约，但不强制。<br />
</span><span style="font-size: 13px; line-height: 1.25em; ">类库中，只要被标志@classmethod的方法，会直接暴露成Ajax服务，如：</span></span></h2>
<pre class="prettyprint" style="font-size: 12px; padding: 0.5em; overflow: auto; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; max-width: 70em; background-color: #eeeeee; line-height: normal; "><span class="kwd" style="color: #000088; ">class</span><span class="pln"> </span><span class="typ" style="color: #660066; ">Foo</span><span class="pun" style="color: #666600; ">:</span><span class="pln"><br />
&nbsp; &nbsp; </span><span class="lit" style="color: #006666; ">@classmethod</span><span class="pln"><br />
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">def</span><span class="pln"> hello</span><span class="pun" style="color: #666600; ">(</span><span class="pln">cls</span><span class="pun" style="color: #666600; ">,</span><span class="pln"> arg1</span><span class="pun" style="color: #666600; ">,</span><span class="pln"> arg2</span><span class="pun" style="color: #666600; ">):</span><span class="pln"> <br />
&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">return</span><span class="pln"> </span><span class="pun" style="color: #666600; ">{</span><span class="pln">msg</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="str" style="color: #008800; ">'Hello Ajax[%s %s]'</span><span class="pln"> </span><span class="pun" style="color: #666600; ">%</span><span class="pln"> </span><span class="pun" style="color: #666600; ">(</span><span class="pln">arg1</span><span class="pun" style="color: #666600; ">,</span><span class="pln"> arg2</span><span class="pun" style="color: #666600; ">)}</span></pre>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><br />
Ajax服务地址为：<tt style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; font-size: 12px; max-width: 66em; ">http://xxx.xxx.xxx.xxx:8000/api?data={"name":"Foo.hello", "args":["stone2083", "connie2083"]</tt>} 服务信息为：</p>
<pre class="prettyprint" style="font-size: 12px; padding: 0.5em; overflow: auto; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; max-width: 70em; background-color: #eeeeee; line-height: normal; "><span class="pun" style="color: #666600; ">{</span><span class="pln"><br />
&nbsp; status</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="str" style="color: #008800; ">"Success"</span><span class="pun" style="color: #666600; ">,</span><span class="pln"><br />
&nbsp; message</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="str" style="color: #008800; ">"Success"</span><span class="pun" style="color: #666600; ">,</span><span class="pln"><br />
&nbsp; api</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="pun" style="color: #666600; ">{</span><span class="pln"><br />
&nbsp; &nbsp; args</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="pun" style="color: #666600; ">[</span><span class="pln"> </span><span class="pun" style="color: #666600; ">],</span><span class="pln"><br />
&nbsp; &nbsp; name</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="str" style="color: #008800; ">"Foo.hello"</span><span class="pln"><br />
&nbsp; </span><span class="pun" style="color: #666600; ">},</span><span class="pln"><br />
&nbsp; result</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="pun" style="color: #666600; ">{</span><span class="pln"><br />
&nbsp; &nbsp; msg</span><span class="pun" style="color: #666600; ">:</span><span class="pln"> </span><span class="str" style="color: #008800; ">"Hello Ajax[stone2083 connie2083]"</span><span class="pln"><br />
&nbsp; </span><span class="pun" style="color: #666600; ">}</span><span class="pln"><br />
</span><span class="pun" style="color: #666600; ">}</span></pre>
<h2 style="font-size: large; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">Plugins规范</h2>
<pre class="prettyprint" style="font-size: 12px; padding: 0.5em; overflow: auto; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; max-width: 70em; background-color: #eeeeee; line-height: normal; "><span class="pln">youku </span><span class="pun" style="color: #666600; ">--&gt;</span><span class="pln"> </span><span class="pun" style="color: #666600; ">插件名字</span><span class="pln"><br />
&nbsp; &nbsp; __init__</span><span class="pun" style="color: #666600; ">.</span><span class="pln">py </span><span class="pun" style="color: #666600; ">--&gt;</span><span class="pln"> </span><span class="pun" style="color: #666600; ">插件程序</span><span class="pln"><br />
&nbsp; &nbsp; index</span><span class="pun" style="color: #666600; ">.</span><span class="pln">html </span><span class="pun" style="color: #666600; ">--&gt;</span><span class="pln"> </span><span class="pun" style="color: #666600; ">插件模板</span><span class="pln"> </span><span class="pun" style="color: #666600; ">【可选择】</span></pre>
<p style="line-height: 1.25em; max-width: 64em; font-family: arial, sans-serif; font-size: 13px; "><em></em>init<em></em>.py 内容为：</p>
<pre class="prettyprint" style="font-size: 12px; padding: 0.5em; overflow: auto; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; max-width: 70em; background-color: #eeeeee; line-height: normal; "><span class="kwd" style="color: #000088; ">from</span><span class="pln"> rasplib </span><span class="kwd" style="color: #000088; ">import</span><span class="pln"> </span><span class="typ" style="color: #660066; ">Plugin</span><span class="pln"><br />
urls </span><span class="pun" style="color: #666600; ">=</span><span class="pln"> </span><span class="pun" style="color: #666600; ">(</span><span class="pln"><br />
&nbsp; &nbsp; </span><span class="str" style="color: #008800; ">'/'</span><span class="pun" style="color: #666600; ">,</span><span class="pln"> </span><span class="str" style="color: #008800; ">'Index'</span><span class="pun" style="color: #666600; ">,</span><span class="pln"><br />
</span><span class="pun" style="color: #666600; ">)</span><span class="pln"><br />
<br />
</span><span class="com" style="color: #880000; "># 必须创建plugin实例，参数分别为插件名，作者名，版本号， 支持功能的urls</span><span class="pln"><br />
</span><span class="com" style="color: #880000; ">#其中，plugin中包含RaspCTL类库的所有方法，可直接调用</span><span class="pln"><br />
plugin </span><span class="pun" style="color: #666600; ">=</span><span class="pln"> </span><span class="typ" style="color: #660066; ">Plugin</span><span class="pun" style="color: #666600; ">(</span><span class="str" style="color: #008800; ">'youku'</span><span class="pun" style="color: #666600; ">,</span><span class="str" style="color: #008800; ">'stone2083'</span><span class="pun" style="color: #666600; ">,</span><span class="pln"> </span><span class="str" style="color: #008800; ">'0.1'</span><span class="pun" style="color: #666600; ">,</span><span class="pln"> urls</span><span class="pun" style="color: #666600; ">)</span><span class="pln"><br />
<br />
</span><span class="com" style="color: #880000; ">#web.py写法，插件规范并不引入新的学习成本。</span><span class="pln"><br />
</span><span class="kwd" style="color: #000088; ">class</span><span class="pln"> </span><span class="typ" style="color: #660066; ">Index</span><span class="pun" style="color: #666600; ">:</span><span class="pln"><br />
&nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">def</span><span class="pln"> GET</span><span class="pun" style="color: #666600; ">(</span><span class="kwd" style="color: #000088; ">self</span><span class="pun" style="color: #666600; ">):</span><span class="pln"><br />
&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="kwd" style="color: #000088; ">return</span><span class="pln"> </span><span class="str" style="color: #008800; ">'youku-NotSupported.'</span><span class="pln"> &nbsp;</span><span class="com" style="color: #880000; ">#可以直接输出</span><span class="pln"><br />
&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="com" style="color: #880000; ">#return plugin.render.index() &nbsp;#可以渲染某个模板信息</span></pre>
<h1 style="font-size: x-large; margin-top: 0px; background-image: none; border: 0px; padding-left: 0px; max-width: 700px; font-family: arial, sans-serif; line-height: normal; ">写在最后</h1>
<ul style="padding-left: 25px; max-width: 62em; font-family: arial, sans-serif; font-size: 13px; line-height: normal; ">
     <li style="margin-bottom: 0.3em; ">RaspCTL作者联系信息：stone2083#yahoo.cn 程序的任何问题可直接联系这个邮箱</li>
     <li style="margin-bottom: 0.3em; ">招募UED设计前端界面 0.1.0前端非常糟糕，急待重构</li>
     <li style="margin-bottom: 0.3em; ">招募Plugin开发者，丰富RaspCTL</li>
     <li style="margin-bottom: 0.3em; ">期待小白鼠适用RaspCTL</li>
</ul><img src ="http://www.blogjava.net/stone2083/aggbug/394311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2013-01-16 16:23 <a href="http://www.blogjava.net/stone2083/archive/2013/01/16/394311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下SSH Session复制</title><link>http://www.blogjava.net/stone2083/archive/2011/08/25/357291.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Thu, 25 Aug 2011 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2011/08/25/357291.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/357291.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2011/08/25/357291.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/357291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/357291.html</trackback:ping><description><![CDATA[羡慕Windows下secureCRT的Session Copy功能，一直在寻找Linux下类似的软件，殊不知SSH本身就支持此功能。<br />特别感谢<a href="http://weibo.com/argan">阿干</a>同学的邮件分享。<br /><br /><strong>详细方法</strong><br /><div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Linux</span><span style="color: #000000; ">/</span><span style="color: #000000; ">mac下，在$HOME</span><span style="color: #000000; ">/</span><span style="color: #000000; ">.ssh</span><span style="color: #000000; ">/</span><span style="color: #000000; ">config中加入<br />Host&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; "><br />ControlMaster&nbsp;auto<br />ControlPath&nbsp;</span><span style="color: #000000; ">/</span><span style="color: #000000; ">tmp</span><span style="color: #000000; ">/</span><span style="color: #000000; ">ssh</span><span style="color: #000000; ">-%</span><span style="color: #000000; ">r@</span><span style="color: #000000; ">%</span><span style="color: #000000; ">h</span></div></div><div><div>至此只要第一次SSH登录输入密码，之后同个Hosts则免登。<br /><br /><strong>配置文件分析</strong><br />man ssh_config 5<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">ControlPath<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Specify&nbsp;the&nbsp;path&nbsp;to&nbsp;the&nbsp;control&nbsp;socket&nbsp;used&nbsp;for&nbsp;connection&nbsp;sharing&nbsp;as&nbsp;described&nbsp;in&nbsp;the&nbsp;ControlMaster&nbsp;section<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;above&nbsp;or&nbsp;the&nbsp;string&nbsp;&#8220;none&#8221;&nbsp;to&nbsp;disable&nbsp;connection&nbsp;sharing.&nbsp;&nbsp;In&nbsp;the&nbsp;path,&nbsp;&#8216;%l&#8217;&nbsp;will&nbsp;be&nbsp;substituted&nbsp;by&nbsp;the<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;host&nbsp;name,&nbsp;&#8216;%h&#8217;&nbsp;will&nbsp;be&nbsp;substituted&nbsp;by&nbsp;the&nbsp;target&nbsp;host&nbsp;name,&nbsp;&#8216;%p&#8217;&nbsp;the&nbsp;port,&nbsp;and&nbsp;&#8216;%r&#8217;&nbsp;by&nbsp;the&nbsp;remote<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;login&nbsp;username.&nbsp;&nbsp;It&nbsp;is&nbsp;recommended&nbsp;that&nbsp;any&nbsp;ControlPath&nbsp;used&nbsp;for&nbsp;opportunistic&nbsp;connection&nbsp;sharing&nbsp;include&nbsp;at<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;least&nbsp;%h,&nbsp;%p,&nbsp;and&nbsp;%r.&nbsp;&nbsp;This&nbsp;ensures&nbsp;that&nbsp;shared&nbsp;connections&nbsp;are&nbsp;uniquely&nbsp;identified.</span></div>%r 为远程机器的登录名<br />%h 为远程机器名</div></div></div><strong><br />原理分析</strong><br />严格地讲，它并不是真正意义上的Session Copy，而只能说是共享Socket。<br />第一次登录的时候，将Socket以文件的形式保存到：/tmp/ssh-%r@%h这个路径<br />之后登录的时候，一旦发现是同个主机，则复用这个Socket<br />故，一旦主进程强制退出（Ctrl+C），则其他SSH则被迫退出。<br /><br />可以通过ssh -v参数，看debug信息验证以上过程<br /><br /><strong>备注<br /></strong>有同学说在linux上通过证书的形式，可以实现免登录，没错。<br />对于静态密码，完全可以这么干；对于动态密码（口令的方式），则上述手段可以方便很多。<br /><strong><br /></strong><img src ="http://www.blogjava.net/stone2083/aggbug/357291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2011-08-25 17:02 <a href="http://www.blogjava.net/stone2083/archive/2011/08/25/357291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu下删除内核后的恢复</title><link>http://www.blogjava.net/stone2083/archive/2011/06/18/352551.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Fri, 17 Jun 2011 16:16:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2011/06/18/352551.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/352551.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2011/06/18/352551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/352551.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/352551.html</trackback:ping><description><![CDATA[悲哀，今天下午不知道执行了什么命令，居然删除了linux kernel。<br />
晚上重启机子后，无法进入系统，一直停留在<a href="http://www.memtest.org/">memtest</a>界面。<br />
<br />
一开始，以为grub损坏，只好通过Live CD/<span class="Apple-style-span" style="color: #333333; font-family: 'Ubuntu Beta', UbuntuBeta, Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 12px; line-height: 16px; ">USB Stick&nbsp;</span>的方式，进入系统。<br />
1. 进入<a href="http://www.ubuntu.com/download/ubuntu/download">Ubuntu Download</a>页面，下载ISO文件<br />
2. 通过<a href="http://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer.exe">Universal USB Installer</a>，创建USB启动文件<br />详细说明请点击Ubuntu Download页面中&#8220;<span class="Apple-style-span" style="color: #333333; font-family: 'Ubuntu Beta', UbuntuBeta, Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif; font-size: 18px; font-weight: bold; line-height: 16px; ">Burn your CD or create a USB drive</span>&#8221;<br /><br />进入Live CD后，发现grub完好，但是查看/boot/下，发现linux kernel文件不见了，估计下午执行什么命令，给不小心删除了。<br /><br />只能通过chroot方式，重装linux kernel<br />1.chroot -- 利用root帐号操作<br />#mkdir /uroot #创建临时文件，作为新的root文件<br />#mount /dev/sda1 /uroot #将硬盘挂载到新的root文件上，sda是之前装有ubuntu的硬盘<br />#mount --bind /proc /uroot/proc #将当前进程文件绑定到uroot下的proc<br />#mount --bind /dev /uroot/dev &nbsp;#将设备文件绑定到uroot下的dev<br />#chroot<br /><br />2.配置uroot下的网络 -- 家中是利用ADSL上网<br /># pppoeconf #配置ADSL帐号和密码<br /># pon dsl-provider #启动帐号，上网<br /><br />3.安转linux kernel<br /># apt-get install&nbsp;<span style="font-size: 11px;">linux-image-2.6.32-32-generic<br /><br />重启系统，恢复正常。</span><img src ="http://www.blogjava.net/stone2083/aggbug/352551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2011-06-18 00:16 <a href="http://www.blogjava.net/stone2083/archive/2011/06/18/352551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用vimdiff作为svn diff的默认工具</title><link>http://www.blogjava.net/stone2083/archive/2011/05/24/350917.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Tue, 24 May 2011 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2011/05/24/350917.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/350917.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2011/05/24/350917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/350917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/350917.html</trackback:ping><description><![CDATA[一直习惯于Linux命令，唯独对svn diff耿耿于怀，其结果真不是人能看懂的 ：）<br />感谢<a title="khotyn" href="http://www.khotyn.com/">khotyn</a>的分享文档，提醒我可以使用vimdiff作为svn diff的默认工具，步骤如下：<br /><br />1.编写svndiff脚本<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080;">1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/bin/sh<br /></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #008000;">#去掉前5个参数</span><span style="color: #008000;"><br /></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">shift</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">5</span><span style="color: #000000;"><br /></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;">使用vimdiff比较</span><span style="color: #008000;"><br /></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">vimdiff&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">f&nbsp;</span><span style="color: #000000; font-weight: bold;">"</span><span style="color: #000000; font-weight: bold;">$@</span><span style="color: #000000; font-weight: bold;">"</span></div><br />2.修改svn默认配置，vi ~/.subversion/config<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080;">1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">设置diff-cmd为svndiff脚本地址</span><span style="color: #008000;"><br /></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">diff</span><span style="color: #000000;">-</span><span style="color: #000000;">cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;svndiff<br /></span><span style="color: #008080;"></span><span style="color: #000000;"></span></div><br />3.使用svn diff命令，效果如下<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/linux/svndiff.png" height="400" width="600" /><br /><br />备注：<br />1. svn diff --diff-cmd 中的7个回调函数参数分别是：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">-</span><span style="color: #000000;">u<br /></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;"></span><span style="color: #000000;">-</span><span style="color: #000000;">L<br /></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">pom</span><span style="color: #000000;">.</span><span style="color: #000000;">xml&nbsp;(revision&nbsp;</span><span style="color: #800000;">351676</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #000000;">-</span><span style="color: #000000;">L<br /></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">pom</span><span style="color: #000000;">.</span><span style="color: #000000;">xml&nbsp;(working&nbsp;copy)<br /></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #000000;">.</span><span style="color: #000000;">svn</span><span style="color: #000000;">/</span><span style="color: #000000;">tmp</span><span style="color: #000000;">/</span><span style="color: #000000;">tempfile</span><span style="color: #000000;">.</span><span style="color: #000000;">tmp<br /></span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">pom</span><span style="color: #000000;">.</span><span style="color: #000000;">xml</span></div><br />2. vimdiff非常强悍的<img src ="http://www.blogjava.net/stone2083/aggbug/350917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2011-05-24 13:47 <a href="http://www.blogjava.net/stone2083/archive/2011/05/24/350917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu下安装电驴</title><link>http://www.blogjava.net/stone2083/archive/2008/02/05/179341.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Tue, 05 Feb 2008 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/02/05/179341.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/179341.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/02/05/179341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/179341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/179341.html</trackback:ping><description><![CDATA[春节放假，难得有10天放松的机会，欲把本本从开发机稍稍改装一下，添加上娱乐软件。<br />
装上beep-media-player,mplayer+w32codes，好歹本本可以听听音乐，看看电影了。<br />
唯可惜，本本上没有任何资源。<br />
<br />
于是乎，想装上电驴，下载点东东。从网上搜索下，发现linux有几款工具，amule，Azureus，mldonkey。<br />
amule以前用过，感觉一般，没什么特色可言。<br />
Azureus是同事推荐，但没用过，没有发言权。<br />
mldonkey是网上朋友极力推荐的，最终我选择mldonkey，原因如下：<br />
1）速度快，据说可以达到带宽的上限<br />
2）可以同时连接多个server<br />
3）搜索没有限制，不像windows下的emule，屏蔽了大量的敏感词。<br />
。。。<br />
更多优点待挖掘中。<br />
<br />
贪图方便的朋友，其实安装这三款软件，都比较方便，在ubuntu7.10源中，都有。<br />
sudo apt-get install amule<br />
sudo apt-get install azureus<br />
sudo apt-get install mldonkey-server mldonkey-gui<br />
<br />
我个人是比较倾向于编译源码安装的。<br />
mldonkey下载地址：http://mldonkey.sourceforge.net/Main_Page&nbsp; 截至当前，最新版本是<a href="http://sourceforge.net/project/showfiles.php?group_id=156414&amp;package_id=174487&amp;release_id=569823">2.9.3</a><br />
sancho下载地址：http://sancho-gui.sourceforge.net/download.phtml 最新版本
<a class="ok" title="download: sancho-0.9.4-58-linux-gtk-java.sh" href="http://sancho-gui.sourceforge.net/files/2gv4w0aqut29q/sancho-0.9.4-58-linux-gtk-java.sh" onmouseover="window.status='download: sancho-0.9.4-58-linux-gtk-java.sh';return true" onmouseout="window.status='';return true">sancho-0.9.4-58-linux-gtk-java.sh</a>		<br />
<br />
下载mldonkey，解压，configure（指定安装路径），make ，make install。<br />
下载sancho，添加执行权限，执行脚本。<br />
<br />
在mldonkey目录下，执行bin/mlnet<br />
在sancho目录下，执行sancho命令，进行配置，并且选择mlnet的安装路径。此后，只要运行sacho就可以了，不必要再运行mlnet。<br />
需要明确一个概念：mldonkey是核心，支持<span class="postbody"><span style="font-size: 13px; line-height: normal;">ed2k、bittorrent、http、ftp&#8230;&#8230;等协议。而sancho是基于mldonkey的一个图形化界面。所以，只要你愿意使用命令，那么不安装sancho，也无所谓。只不过我也是懒惰的人，所以需要图形界面。<br />
<br />
至此，其实软件都安装完成了，只不过还需要一些简单的配置，<br />
在sancho界面进行连接数和下载速度等的配置<br />
编辑</span></span><span class="postbody"><span style="font-size: 13px; line-height: normal;">~/.mldonkey/downloads.ini文件，进行下载路径的配置<br />
</span></span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(*&nbsp;The&nbsp;directory&nbsp;where&nbsp;temporary&nbsp;files&nbsp;should&nbsp;be&nbsp;put&nbsp;*)<br />
temp_directory&nbsp;=&nbsp;temp</span></div>
把temp目录修改成你需要的临时目录<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dirname&nbsp;=&nbsp;"incoming/files"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strategy&nbsp;=&nbsp;incoming_files<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;priority&nbsp;=&nbsp;0<br />
};</span></div>
把incoming/files修改文件输出路径<br />
<br />
我自己是没有作这个修改，只是建立了一个软链接 <br />
ln -s <span class="postbody"><span style="font-size: 13px; line-height: normal;">~/.mldonkey/incomfing/files ~/tmp/mldonkey&nbsp; 以后只需要关注这个目录就可以了。<br />
<br />
万事大吉，但是发觉下载速度没有想象中那么快，稍有遗憾。不过这个软件还真不错，值得推荐。</span></span><span class="postbody"></span><br />
<img src ="http://www.blogjava.net/stone2083/aggbug/179341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-02-05 13:41 <a href="http://www.blogjava.net/stone2083/archive/2008/02/05/179341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu如何用adsl上网</title><link>http://www.blogjava.net/stone2083/archive/2008/01/13/175023.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Sun, 13 Jan 2008 12:30:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/01/13/175023.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/175023.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/01/13/175023.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/175023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/175023.html</trackback:ping><description><![CDATA[在杭州一直使用无限网络上网，今天回绍兴，只能用adsl上网。<br />
<br />
adsl上网是采用pppoe协议上网的，幸好ubuntu默认情况下，已经安装了pppoe程序<br />
如果没有安装的用户，可以使用<br />
sudo apt-get install pppoe pppoeconf<br />
安装pppoe程序和pppoe配置程序<br />
<br />
接下来，使用<br />
&nbsp;sudo pppoeconf <br />
进行上网参数配置，主要是配置adsl上网的帐号和密码<br />
<br />
最后，使用<br />
sudo pon dsl-provider 联网<br />
sudo poff dsl-provider 断网<br />
<br />
整个过程还是比较方便的。<br />
<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/175023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-01-13 20:30 <a href="http://www.blogjava.net/stone2083/archive/2008/01/13/175023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu下禁用触摸板</title><link>http://www.blogjava.net/stone2083/archive/2008/01/13/175019.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Sun, 13 Jan 2008 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2008/01/13/175019.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/175019.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2008/01/13/175019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/175019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/175019.html</trackback:ping><description><![CDATA[在本本上编程，老是不小心碰到触摸板，导致光标乱飞。<br />
以下是禁用触摸板的方法。<br />
<br />
一般情况下，是使用synaptics触摸板驱动。<br />
最直接的方法，就是卸载synaptics驱动。sudo apt-get autoremove synaptics <br />
但是如果一旦需要使用触摸板，还要把驱动装上，太麻烦了。<br />
<br />
还有一种比较简单的方法。<br />
编辑xorg.conf文件：sudo vi /etc/X11/xorg.conf<br />
Section "InputDevice"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Synaptics Touchpad"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "synaptics"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "SendCoreEvents"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Device"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "/dev/psaux"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Protocol"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "auto-dev"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "HorizEdgeScroll"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "0"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">Option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "SHMConfig"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "on"</span><br />
EndSection<br />
<br />
&nbsp;添加 Option "SHMConfig" "on" 这行内容<br />
SHMConfig on 表明开启触摸板的参数设置权限<br />
<br />
命令：synclient touchpadoff=1 －－关闭触摸板<br />
命令：synclient touchpadoff=0 －－开启触摸板<br />
自己写一个关闭触摸板命令的sh文件，加入到自启动栏目中，就万事大吉了。<br />
<br />
<span style="color: #000000;"><span style="color: #000000;"><span style="color: #000000;"></span></span></span><span style="color: #000000;"><span style="color: #000000;"></span></span><br />
<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/175019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2008-01-13 20:12 <a href="http://www.blogjava.net/stone2083/archive/2008/01/13/175019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vi/vim 键盘图 及感想</title><link>http://www.blogjava.net/stone2083/archive/2007/12/21/169309.html</link><dc:creator>stone2083</dc:creator><author>stone2083</author><pubDate>Fri, 21 Dec 2007 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/stone2083/archive/2007/12/21/169309.html</guid><wfw:comment>http://www.blogjava.net/stone2083/comments/169309.html</wfw:comment><comments>http://www.blogjava.net/stone2083/archive/2007/12/21/169309.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/stone2083/comments/commentRss/169309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/stone2083/services/trackbacks/169309.html</trackback:ping><description><![CDATA[<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/linux/vim.png" />
vi/vim键盘图，希望给正在学习vim的同学带来些帮助。<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/stone2083/vi-vim-cheat-sheet.png" /><br />
<br />
<br />
要不是公司同事的分享，我到现在还不知道有这么好的一个东西。其实网络资源是丰富的，但是我（我们）就是缺乏发现没的眼光。06年5月份就出品的东西，直到现在才被发现。可悲可叹。<br />
其实，自己用linux的时间也不短了，对VI也有一定的了解，但是就是没有总结分享。<br />
选择了linux，选择了开源，也要有分享的精神。<br />
<br />
最后，感谢作者的精心制作 ：）<br />
<img src ="http://www.blogjava.net/stone2083/aggbug/169309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/stone2083/" target="_blank">stone2083</a> 2007-12-21 15:03 <a href="http://www.blogjava.net/stone2083/archive/2007/12/21/169309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>