Apache2设置是否显示目录列表

Apache2设置是否显示目录列表

Apache2的配置文件为 /etc/apache2/apache2.conf ,在 <Directory> 部分设置目录访问权限。

一般我们需要隐藏服务器的跟目录,所以我们将配置改为

<Directory />
-	Options Indexes FollowSymLinks
+	Options FollowSymLinks
	AllowOverride None
	Require all denied
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

假如我们需要访问部分服务器下的目录,则新设置一个 <Directory> 节点,并且在将目录设置为服务器的绝对路径,如我们需要访问服务器下的 DownLoadList 目录

<Directory /var/www/html/DownLoadList/>
  Options Indexes
  IndexOptions NameWidth=25 Charset=UTF-8 
  Allow from all
  DirectoryIndex none
</Directory>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中DirectoryIndex none的作用是为了避免自动打开目录下的index.html文件

1 apache安装过程(centos5.1_64)
./configure –prefix=/usr/local/apache2.2.8 LDFLAGS=”-L/usr/lib64 -L/lib64″–enable-mods-shared=all –enable-so –libdir=/usr/lib64 –with-mpm=worker –enable-cache –enable-disk-cache –enable-mem-cache –enable-file-cache –enable-rewrite=share –enable-proxy=share –enable-cgi –enable-proxy-ajp=share –enable-dav=share –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util/
make && make install
2 和tomcat成功整合后,配置apache的默认语言为中文:
vi httpd.conf里 去掉注释#
Include conf/extra/httpd-languages.conf
然后配置conf/extra/httpd-languages.conf文件
添加如下:
DefaultLanguage zh-CN
AddDefaultCharset gb2312
设置虚拟目录:
vi ../httpd.conf
……
Alias /shujb “/home/jack”
<directory “=”” home=”” jack”=””>
Options Indexes FollowSymlinks
       AllowOverride None
Order allow,deny
Allow from all
…….
设置完成后,可以显示目录,但无法正常显示中文,出现乱码。在浏览器切换编码可以正常显示。说明问题处在apache设置的默认语言没有生效。
个性化Apach2目录列表,主要取决于对mod_autoindex模块中的各种指令的使用
和配合。可以去先阅读一下Apache2.0手册中的mod_autoindex模块文档。
个性化配置开始
一、修改httpd.conf文件
对需要个性化的目录进行定制:
 <directory “=”” www=”” download”=””>
Options Indexes FollowSymlinks
IndexOptions FancyIndexing ScanHTMLTitles NameWidth=25
DescriptionWidth=128 VersionSort FoldersFirst
IndexIgnore favicon.ico header.html footer.html images
HeaderName header.html   #header.html路径相对于主目录的
ReadmeName footer.html
AddDescription “ftp安装包” vsftpd.tar.gz
IndexOrderDefault Ascending Name
AllowOverride None
Order allow,deny
Allow from all
[编辑]
部分指令说明:
    * ScanHTMLTitles:如果目录中含有HTML文件,则Apache会自动读取HTML文
件的< title>……部分,用HTML文件的标题作为Description(描述
)显示在列表目录中的 Description部分。。(注意:加载该指令会加大CPU的
负荷!)
    * NameWidth=25 :指定目录列表可以显示最长为25字节的文件/目录名,如
果使用*来做值,会自适应到最长文件名。
    * DescriptionWidth=128:指定目录列表可以显示最长为128字节的文件/目
录描述内容。
    * VersionSort:如果目录中含有同一文件的不同版本,则Apache会对该文
件按照版本号自动排序。
    * FoldersFirst:最先列出文件夹会使显示效果更好看一些吧!
    * IndexIgnore:在它后面设定的文件/目录不会在目录列表中显示。
    * HeaderName:指定该目录列表的header模板,指定一个html文件后,
Apache会用这个网页替换掉默认目录列表上面呆板的Index of …..而显示出个
性化的头网页。(注意:文件路径是相对于列表目录的根而言的,并不是相对于
系统根或者网站根而言的!)
    * ReadmeName:指定该目录列表的footer模板,指定一个html文件后,
Apache会在目录列表的底部加载这个网页。(注意:文件路径是相对于列表目录
的根而言的,并不是相对于系统根或者网站根而言的!)
    * AddDescription:如果你想为某个文件设置一个Description(描述)的
话,就使用这个指令,格式是AddDescription “描述” 文件名 。
    * IndexOrderDefault Ascending Name:指定目录列表的排序方式为按名称
排序。
当然,还可以定制很多其他的内容,包括可以为每一个文件设定一个图标等等,
去读文档吧。
[编辑]
二、建立header.html和footer.html
这两个文件是列表目录的头网页和尾网页,也是个性化的关键。其实这部分和
Apache水平已经没有什么关系了,主要还是看你制作网页水平如何了,呵呵。
这里给出两个文件的格式:
    * header.html:
可以在这里加入个性化内容,图片、FLASH、表格等等,随意啦!

* footer.html:

可以在这里加入个性化内容,图片、FLASH、表格等等,随意啦!

注:
options -indexes
(此时直接访问目录403 Forbidden)
显示:
options +indexes

Apache默认显示文件列表.
可以进一步控制文件列表显示模式:
这里有许多配置

HeaderName HEADER.html
在返回的文件列表信息顶部插入的Html文件.可以使用绝对或相对路径.不过仍然
建议使用绝对路径,因为相对路径无法被子目录继承..
指定的文件在Apache里设定的MIME类型必须为 text/*
默认的文件是header.html
ReadmeName /avc.htm
附加在文件列表尾部的HTML文件.用法同 HeaderName Filename的语法
默认的文件是当前目录下 footer.html
IndexOptions Charset=GB2312 这是目录的默认语言。
IndexIgnore *.jpg *.ico .htaccess php.ini
在返回文件列表中屏蔽特定文件.如果设置为 IndexIgnore * ,那么实际上返回
一个空文件
IndexOrderDefault Ascending|Descending Name|Date|Size|Description
文件列表排序方式
AddDescription “Qmail安装包” qmail.tar.gz
设置目录列表中文件、文件夹的描述
Note:
通常的header.html 和 footer.html格式:
header.html
…..

footer.html

……

即把文件列表嵌套.在 表格里

最后我的设置为:
Alias /shujb “/home/jack”
<directory “=”” home=”” jack”=””>
Options Indexes FollowSymlinks
IndexOptions FancyIndexing ScanHTMLTitles HTMLTable NameWidth=125 DescriptionWidth=256 VersionSort FoldersFirst
IndexIgnore favicon.ico header.html footer.html images
HeaderName /conf/extra/header.html
ReadmeName /conf/extra/footer.html
IndexOptions Charset=GB2312
IndexOrderDefault Descending Name
AllowOverride None
Order allow,deny
Allow from all
header.html放在主目录ROOT/conf/extra/header.html下。
header.html,footer.html也就没有设置什么。至此目录可以正常显示了。。相对于apache默认的好多了。呵呵。

实例:

导读:apache2服务器中禁止目录列表的设置方法,修改Options项,去掉Indexes,或改成-Indexes,禁止显示目录列表。

Apache2禁止显示目录列表的设置方法

一、默认情况,如果apache指定的目录没有配置“index.php index.html index.htm”文件之一,则appache会显示目录及目录下的所有文件:

复制代码代码示例:
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>

二、在apache2中,所有配置都可以写到/etc/apache2/httpd.conf(默认里面是空的), 但在站点配置文件/etc/apache2/sites-available/* (例如default)文件中。

可以单独针对某个单独的域名来配置规则,在其中找到目录配置:

复制代码代码示例:
 <Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

修改Options项,去掉“Indexes”,或改成“-Indexes”即可(索引)。

修改完配置,重新载入apache2配置或重启apache2:

复制代码代码示例:
#sudo servcie apache2 reload 或
#sudo /etc/init.d/apache2 restart

重启

service apache2 restart重启Apache服务才会生效

搭建openwrt本地源(8.7更新,使用openwrt的http服务)

本帖最后由 丰花 于 2015-8-9 21:32 编辑

众所周知,openwrt的ipk源速度很慢,而且还经常抽风,所以最近论坛里涌现出了一些好心人搭建的国内ipk源,来决解这一问题,但是别人的总归是别人的,虽然我相信好心人的人品,但是人品好不能决解各种意外不是吗?今天机房挂了,明天刷机网络没连上,后天。。。

所以拥有自己的ipk源才是最好的,而当中最好的当然是本地搭建的啦,

那么如何搭建属于自己的本地ipk源呢,为此google ,baidu了一下,发现已经后很多的前辈的教程:
树叶的blog           http://www.shuyz.com/setup-openwrt-package-src-mirror.html
还有这一篇           http://www.52pi.net/forum.php?mod=viewthread&tid=1419

下面是我的自己根据上面那两篇教程总结折腾的过程:
1、下载官方ipk
因为我拥有一个vps,所以我使用的是树叶的blog里面的py脚本把所有的ipk都抓取到后,下载回来的。当然你也可以使用idm来直接批量下载会本地,或者其他的下载工具。
 修改画红线的下载地址,下载到文件夹名就可以。

2、搭建本地http服务器(有两种方法)    1) 使用hfs搭建本地http服务器
官方地址:http://www.rejetto.com/hfs/?f=dl
使用hfs 的原因是无需安装,双击即用。
将第一步下载到本地的所有ipk都拖到hfs里面,hfs会自动生成一个本地地址。

2) 直接使用openwrt的http服务
单单只是路由的空间是不够存放400多M的ipk的,所以我们需要借助挂载的U盘,将ipk放到U盘上,然后一个个文件夹软链接到openwrt上的   /www  目录里
方法是:ln -s 源目录 目标软连接,
            ln -s /mnt/sda4/ar71xx/base /www/base        #我的U盘在openwrt上的目录是 /mnt/sda4

            

3、将第二步里生成的本地地址贴到  luci界面中  系统–软件包–配置,如图:
1)
 保存好后,ssh上去opkg update 再看看速度和时间。。

2)根据自己路由的地址,修改ipk源地址。比如我的路由是 192.168.1.1
   保存好后,ssh上去opkg update

3.PNG (52.78 KB, 下载次数: 0)

下载附件  保存到相册

2015-8-7 13:02 上传

到此属于你的本地ipk源已经搭建完成,enjoy{:soso_e100:}

补充:1、如果你和我一样使用的是 chaos_calmer/15.05-rc2/ar71xx/nand 的源,
那么这里有我已经下载回来的,链接: http://pan.baidu.com/s/1kTGgZzh 密码: jfek
2、如果你使用的不是chaos_calmer的源,那么你只要去相应的ipk源里面的下载 OpenWrt-ImageBuilder-ar71xx-nand.Linux-x86_64.tar.bz2这个压缩包就可以,里面包含了相应版本的所有的ipk。
理论上,所有版本的OpenWrt-ImageBuilder压缩包里面都包含了该版本所有ipk的,但是不知道为什么chaos_calmer就没有包含,看包大小就知道啦{:soso_e137:}
最后,为了让更多的人看多并学会搭建本地ipk源,教程内容设置回帖可看{:soso_e113:}

Linux文件编辑命令vi详细整理

linux vi 命令编辑操作

(总结)

一、vi编辑器有3种基本工作模式

首先需要知道vi编辑器有3种基本工作模式,分别是:命令模式、文本输入模式、和末行模式。

第一:命令行模式:该模式是进入vi编辑器后的默认模式。任何时候,不管用户处于何种模式,按下ESC键即可进入命令模式。在该模式下,用户可以输入vi命令,用户管理自己的文档。此时从键盘上输入的任何字符都被当作编辑命令来解释。若输入的字符是合法的vi命令,则vi在接受用户命令之后完成相应的动作。但需要注意的是,所输入的命令并不回显在屏幕上。若输入的字符不是vi命令,vi会响铃报警。

第二:文本输入模式:在命令模式下输入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被vi当作文件内容保护起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按ESC键即可。

第三:末行模式:末行模式也称ex转义模式。在命令模式下,用户按“:”键即可进入末行模式下,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令在执行完后,vi自动回到命令模式。如果要从命令模式转换到编辑模式,可以键入a或者i。如果需要从文本模式返回,则按ESC即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。

综上,一般我们使用命令打开文件的时候,是进入到命令模式。在命令模式下,可以切换到文本输入模式和末行模式,但是文本输入模式和末行模式之间是不可以直接相互切换了,因此文本输入模式切换到末行模式,需要先回到命令模式再切换,反之亦然。

此外,编辑文本可以在文本输入模式下,键盘输入对文编进行编辑,或者在命令模式下使用vi命令也是可以起到编辑效果的。

实例演示

首先我们使用命令 vi filename 打开一个文件,这个时候进入到的是命令模式

接下来我们按i,然后键盘随便输入写内容。

然后按ESC重新进入到命令模式。

在命令模式的情况下,我们按:,进入到了末行模式。

我们输入wq!,然后回车,强行保存退出。

下次我们再打开对应文件(可用less filename命令打开),即可看到内容已经更改。

补充:

(1)末行模式下:q! 【强制退出不保存】 q【退出不保存】 wq【退出并保存后面也可以加个!】

(2)如果你不想保存直接退出有可以在命令模式下使用“ctrl+z”快捷键或者按住“shift”键,输入两个z即可退出。

更多命令

进入vi的命令

vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename….filename :打开多个文件,依次进行编辑

屏幕翻滚类命令

Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令

ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换

一、查找
/pattern<Enter> :向下查找pattern匹配字符串
?pattern<Enter>:向上查找pattern匹配字符串

使用了查找命令之后,使用如下两个键快速查找:
n:按照同一方向继续查找
N:按照反方向查找

字符串匹配

pattern是需要匹配的字符串,例如:

1
1:  /abc<Enter>      #查找abc

除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。

1
2
3
1:  /^abc<Enter>    #查找以abc开始的行
2:  /abc$<Enter> #查找以abc结束的行
3:  //^abc<Enter> #查找^abc字符串

二、替换

基本替换

1
2
3
4
5
6
1:  :s/vivian/sky/         #替换当前行第一个 vivian 为 sky
2:  :s/vivian/sky/g     #替换当前行所有 vivian 为 sky
3:  :n,$s/vivian/sky/     #替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
4:  :n,$s/vivian/sky/g     #替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
  (n 为数字,若 n 为 .,表示从当前行开始到最后一行)
5:  :%s/vivian/sky/        #(等同于:1,$s/vivian/sky/   :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
1
<em>6</em>: :%s/vivian/sky/g #(等同于:1,$s/vivian/sky/g     :g/vivian/s//sky/g)替换每一行的所有 vivian 为 sky

可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符

1
2
1:  :s#vivian/#sky/#         替换当前行第一个 vivian/ 为 sky/
2:  :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

例如:

1
2
3
4
5
1:  :s/str1/str2/          #用字符串 str2 替换行中首次出现的字符串 str1
2:  :s/str1/str2/g         #用字符串 str2 替换行中所有出现的字符串 str1
3:  :.,$ s/str1/str2/g     #用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
4:  :1,$ s/str1/str2/g     #用字符串 str2 替换正文中所有出现的字符串 str1
5:  :g/str1/s//str2/g      #功能同上

选项设置

all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

末行模式命令

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行

寄存器操作

“?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
“?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
“?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

实例:vi 命令基本操作:

vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指 令。由于 对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编 辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
    1) 命令行模式command mode)
  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
    2) 插入模式(Insert mode)
  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
    3) 底行模式(last line mode)
  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
2、vi的基本操作
a) 进入vi
    在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
   $ vi myfile
不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧!
b) 切换至插入模式(Insert mode)编辑文件
  在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) Insert 的切换
  您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
d) 退出vi及保存文件
  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
3、命令行模式(command mode)功能键
1). 插入模式
       按「i」切换进入插入模式「insert mode」,按”i”进入插入模式后是从光标当前位置开始输入文件;
  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2). 从插入模式切换为命令行模式
      按「ESC」键。
3). 移动光标
  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
  按「ctrl」+「b」:屏幕往”后”移动一页。
  按「ctrl」+「f」:屏幕往”前”移动一页。
  按「ctrl」+「u」:屏幕往”后”移动半页。
  按「ctrl」+「d」:屏幕往”前”移动半页。
  按数字「0」:移到文章的开头。
  按「G」:移动到文章的最后。
  按「$」:移动到光标所在行的”行尾”。
  按「^」:移动到光标所在行的”行首”
  按「w」:光标跳到下个字的开头
  按「e」:光标跳到下个字的字尾
  按「b」:光标回到上个字的开头
  按「#l」:光标移到该行的第#个位置,如:5l,56l。
4). 删除文字
  「x」:每按一次,删除光标所在位置的”后面”一个字符。
  「#x」:例如,「6x」表示删除光标所在位置的”后面”6个字符。
  「X」:大写的X,每按一次,删除光标所在位置的”前面”一个字符。
  「#X」:例如,「20X」表示删除光标所在位置的”前面”20个字符。
  「dd」:删除光标所在行。
  「#dd」:从光标所在行开始删除#行
5). 复制
  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  「#yw」:复制#个字到缓冲区
  「yy」:复制光标所在行到缓冲区。
  「#yy」:例如,「6yy」表示拷贝从光标所在的该行”往下数”6行文字。
  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与”y”有关的复制命令都必须与”p”配合才能完成复制与粘贴功能。
6). 替换
  「r」:替换光标所在处的字符。
  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
7). 回复上一次操作
  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次”u”可以执行多次回复。
8). 更改
  「cw」:更改光标所在处的字到字尾处
  「c#w」:例如,「c3w」表示更改3个字
9). 跳至指定的行
  「ctrl」+「g」列出光标所在行的行号。
  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

4、Last line mode下命令简介
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。

A) 列出行号

「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。

B) 跳到文件中的某一行

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

C) 查找字符

「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

D) 保存文件

「w」:在冒号输入字母「w」就可以将文件保存起来。

E) 离开vi

「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。

「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

5、vi命令列表
1、下表列出命令模式下的一些键的功能:

h
左移光标一个字符

l
右移光标一个字符

k
光标上移一行

j
光标下移一行

^
光标移动至行首

0
数字”0″,光标移至文章的开头

G
光标移至文章的最后

$
光标移动至行尾

Ctrl+f
向前翻屏

Ctrl+b
向后翻屏

Ctrl+d
向前翻半屏

Ctrl+u
向后翻半屏

i
在光标位置前插入字符

a
在光标所在位置的后一个字符开始增加

o
插入新的一行,从行首开始输入

ESC
从输入状态退至命令状态

x
删除光标后面的字符

#x
删除光标后的#个字符

X
(大写X),删除光标前面的字符

#X
删除光标前面的#个字符

dd
删除光标所在的行

#dd
删除从光标所在行数的#行

yw
复制光标所在位置的一个字

#yw
复制光标所在位置的#个字

yy
复制光标所在位置的一行

#yy
复制从光标所在行数的#行

p
粘贴

u
取消操作

cw
更改光标所在位置的一个字

#cw
更改光标所在位置的#个字

2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename

wq filename
储存正在编辑的文件为filename,并退出vi

q!
放弃所有修改,退出vi

set nu
显示行号

/或?
查找,在/后输入要查找的内容

n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。

对于第一次用vi,有几点注意要提醒一下:
1、 用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)

Openwrt 国内源配置

第一步:获取国内软件源地址

中国科技大学教育网官方主镜像网站:

http://mirrors.ustc.edu.cn/

清华大学开源软件镜像站:

https://mirrors.tuna.tsinghua.edu.cn/

第二步:找到软件包路径

上面提到的两个网站中软件包所在的开源项目名称为lede(清华的那个里面有openwrt,里面只有15.xxx版本的),进入页面后会有OpenWrt 18.06.4的链接,但是这里有个坑需要跳一下:

  1. 进入链接以后默认路径是http://mirrors.ustc.edu.cn/lede/releases/18.06.4/targets ,这里只有一个软件目录在这里
  2. 其他的软件包路径在上一级目录(这个地方之前找了好久,还以为不对,原来需要到上一级),在http://mirrors.ustc.edu.cn/lede/releases/18.06.4/packages 里面

第三步:替换Openwrt软件源

方法一

进入系统直接修改配置文件

vim /etc/opkg/distfeeds.conf

对应路径替换为如下:
src/gz openwrt_core http://mirrors.ustc.edu.cn/lede/releases/18.06.4/targets/x86/64/packages
src/gz openwrt_base http://mirrors.ustc.edu.cn/lede/releases/18.06.4/packages/x86_64/base
src/gz openwrt_luci http://mirrors.ustc.edu.cn/lede/releases/18.06.4/packages/x86_64/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/lede/releases/18.06.4/packages/x86_64/packages
src/gz openwrt_routing http://mirrors.ustc.edu.cn/lede/releases/18.06.4/packages/x86_64/routing
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/lede/releases/18.06.4/packages/x86_64/telephony

方法二

进入openwrt的管理页面,选择 系统–>软件包–>配置OPKG,在opkg/distfeeds.conf部分替换对应国内源地址,最后点击保存即可openwrt opkg

第四步:更新软件包列表

在命令行直接执行:

opkg update

或者在管理页面点击更新列表openwrt opkg

使用命令更新:

中国科技大学教育网官方主镜像网站:

http://mirrors.ustc.edu.cn/

OpenWrt源教育网高速镜像站点:

http://openwrt.proxy.ustclug.org/

清华大学开源软件镜像站:

https://mirrors.tuna.tsinghua.edu.cn/

替换及还原方法:

以mirrors.tuna.tsinghua.edu.cn镜像站为例:

  1. sed i ‘s/downloads.openwrt.org/mirrors.tuna.tsinghua.edu.cn\/lede/g’ /etc/opkg/distfeeds.conf #替换
  2. sed i ‘s/mirrors.tuna.tsinghua.edu.cn\/lede/downloads.openwrt.org/g’ /etc/opkg/distfeeds.conf #还原

 

OpenWrt的web服务器 uhttpd

我们登录的路由器主界面就是通过这个软件指定了80端口来访问的。我们要添加自己额外的网站服务,那只需要重新定义一个端口即可。我定义了一个88端口作为网站端口。找到uhttpd的配置文件添加以下文字即可

1
2
3
4
config 'uhttpd' 'webfile'
list 'listen_http' '0.0.0.0:88'
option 'home' '/mnt/sda1/webfile'
option 'cgi_prefix' '/cgi-bin'

上面的配置我将网站的主目录指定到了我一盘的第一分区中的webfile文件夹中

这时你需要重启uhttpd程序,那么你的网站服务器就算搭好了。你把你的网站放入webfile文件夹中。直接通过您的域名:88就可以访问了。这个有什么用处呢就看个人发挥啦。网站类型太多了,目前正在搞苹果程序开发,也没时间去捣鼓网站的事情。网站既然搭好了也不能不用吧。直接丢了几首歌曲在里面。

如果直接丢一个网页进去,效果图如下:

具体步骤:

1、配置文件修改

在配置文件中增加:

1
2
3
4
config uhttpd 'webfile'
list listen_http '0.0.0.0:88'
option home '/root/sda1/webfile'
option cgi_prefix '/cgi-bin'

2、添加设计好的网页

包括htm文件和同名文件夹,可直接网上下载一个英文网页测试用。

3、添加index.html文件

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="0; URL=/cgi-bin/luci" />
</head>
<body style="background-color: black">
<a style="color: white; text-decoration: none" href="/cgi-bin/luci">LuCI - Lua Configuration Interface</a>
</body>
</html>

其中,”/cgi-bin/luci”处填写自己要跳转到的网页。例如可以添加

/CCTV%20News%20-%20China,%20World,%20Biz,%20Video,%20Live%20events%20-%20English_CCTV_com.htm

文件包括

4、保存,重启uhttpd

1
/etc/init.d/uhttpd restart

本文章由作者:佐须之男 整理编辑,原文地址: OpenWrt的web服务器 uhttpd

TP-Link WR703N升级64M内存+外接SMA天线+刷OpenWRT

TP-Link WR703N升级64M内存+外接SMA天线+刷OpenWRT(1)硬件介绍

这一系列博客主要涉及以下内容:

1、硬件升级改造

2、配置openwrt

3、挂载U盘EXTROOT

4、Goagent,你懂的

5、挂载摄像头

6、USB声卡

7、WR703N超频

8、与Arduino的应用

……还有很多应用,主要看业余时间了……

 

去年TP-Link WR703N 3G无线路由器刚推出来时,俺就马上买了一台,家用、出差带着确实很方便。因为这个路由采用了AR9331的方案,所以网上有很多对其进行改造刷机的文章。通过改造,这个小路由器可以当作BT机、网络摄像头、声卡…………

最近想对这个名片大小的路由器改造一番,以便充分挖掘这个小东西的潜力。从网上查了一下。TP的马甲水星的迅捷都有一样的产品。它们的硬件设计完全一样,只是外观及界面和品牌不同。关键是TP马甲的价格要便宜一些。于是从网上选了水星的MW151RM3G路由器。

到手之后,连电都没加,马上拆开外壳。水星的这个3G路由器外壳要比703N好拆很多。

上面的图是水星MW151RM3G路由器的正反面PCB电路板。从图中可看到,路由器的版本是V1.1的。

这个路由器的内存,DDR的,容量是32MB

 

4MB Flash ROM。启动程序存在这里面。

 

Atheros的AR9331-AL1A处理器。主频400MHz

水星MW151RM3G路由器与TP-Link WR703N路由器的硬件基本是一模一样的。要想充分发挥这个路由器的潜质,网上硬件改的主要是从这几个方面着手:

1、升级原有的4MB SPI FLASH,可以升级到8MB,更大的Flash容量可以使Flash里装更多的程序;

2、升级RAM,从32MB升级到64MB。这样在带更多客户端时,CPU的压力会减小很多;

3、引出TTL针脚,可以通过TTL刷机或通过TTL与更多的硬件连接,完成别的应用;

4、AR9331 超频。主要是通过重新编译OpenWRT代码来实现。超频幅度很可观;

5、引出SMA天线插座。外接天线,可以在一定程度上扩大这个路由器的无线覆盖范围;

6、外扩USB HUB芯片,通过自带的USB接口,再加上USB HUB芯片,可以扩充这个路由器的USB接口数量,以便同时接更多的USB外设。这个功能也可以通过直接外接成品USB HUB来实现。USB接口丰富之后,可以接更多的USB设备,以完成更多的功能,如脱机下载、网络监控等。

 

硬件改造主要是上面六点。而在扩充内存、挂接EXTROOT之后,这个路由器就可能通过安装不同的软件,来实现更多功能。

 

TP-Link WR703N升级64M内存+外接SMA天线+刷OpenWRT(2)升级内存

一开始,是要先升级8M SPI FLASH和64MB DDR内存。

升级之前,当然要先做些功能。要查一下什么样的颗粒才是适合这个路由器的。DDR内存的型号可以在这里查到:http://wiki.openwrt.org/toh/tp-link/tl-wr703n.默认使用DDR400的内存芯片,当然DDR333超频到DDR400也是很稳定滴。

型号 厂商
DDR 32Mx16 HY5DU121622DTP-D43 Hynix
DDR 32Mx16 HY5DU121622CTP-D43 Hynix
DDR 32Mx16 HY5DU121622DTP-D43-C Hynix
DDR 32Mx16 H5DU5162ETR-E3C Hynix
DDR 32Mx16 K4H511638G-LCCC Samsung
DDR 32Mx16 K4H511638J-LCCC Samsung
DDR 32Mx16 A3S12D40ETP-G5 Zentel
DDR 32Mx16 NT5DS32M16BS-5T Nanya
DDR 32Mx16 P3S12D40ETP-GUTT Mira
DDR 32Mx16 MT46V32M16TG-6T:F Micron
DDR 32Mx16 MT46V32M16P-6T:F Micron
DDR 32Mx16 HYB25D512160CE-6 Qimonda
DDR 32Mx16 HYB25D512160CEL-6 Qimonda
DDR 32Mx16 HYB25D512160DE-6 Qimonda
DDR 32Mx16 HYB25D512160BE Infineon
DDR 32Mx16 EDD5116ADTA-6B-E Elpida

 

市面上这种老的DDR1颗粒肯定是不好找了。俺手里的老DDR1的内存,是8位的,也用不了。

不过在二手市场上,这种条子很普遍,价格也便宜。在中关村最常见的是现代HY5DU121622DTP-D43(DDR400)和HY5DU121622CTP-D43(DDR333)颗粒的条子。 

而8M的MX25XXXXX颗粒,型号是MX25L6445EM2I-10G。

升级DDR内存时,可以直接把703N原来的内存颗粒焊下来,把新的换上去即可。

而SPI FLASH颗粒,则需要先用别的编程器,把firmware写进去,然后再更换FLASH颗粒即可。

问题来了,俺手里现有的25XXX编程器是老式的,不支持。于是自己找电路图做了两个,谁知道人品很差。做的两个都没成功,而国外那个SPIFLASH编程软件的IO.DLL在WIN7下提示有问题……临近中秋国庆,从网上买是不太可能了。于是打算先不换SPI的FLASH芯片。

考虑到挂载USB设备后,可以加载EXTROOT,把程序都放到U盘或SD卡里,于是就暂时没有再换FLASH的想法了。

从二手市场买了几条现代HY5DU121622DTP-D43(DDR400)和HY5DU121622CTP-D43(DDR333)颗粒的台式机条子。用这种颗粒的内存条一般是512M的,单面,一条内存上有8个颗粒。在买的时候,有条件的话还是让卖家试一下机,以免出现问题都没处哭去,毕竟这种内存都有10年的历史了。现在想在身边找个用DDR1内存的电脑跟买彩票中奖的概率应该差不多。

手术步骤:

1、先把颗粒从内存条上用热风机吹下来,温度在350-370度就可以,速战速决。要不然高温可能会增加内存损坏的概率。

注意检查内存IC的脚,不要有焊锡粘连。

2、把703N的32MB内存用热风枪吹下来。加焊膏后,用烙铁把原来的焊盘清理一下,注意各脚之间不能有任何粘连。对准方向后,把64MB的内存颗粒脚与焊盘对齐,用热风枪焊好颗粒。

热风枪吹下的32MB DDR内存。

焊好的64MB DDR内存。

上面两个图片是清理焊膏后的效果图。手艺还不错吧,哈。

3、焊完内存颗粒之后,在加电之前,要拿放大镜仔细检查各脚之间是否有焊锡粘连,以及是否有虚焊等问题。

确认没任何问题之后,再加电。

上电之后,路由器正常工作。内存升级完成~~~~

下一步,就是要进行刷机操作了。当然,刷机操作在升级硬件之前也是可以滴。

http://iteyes.blog.sohu.com/240058202.html

Windows下使用自带certutil工具校验文件MD5、SHA1、SHA256

example.jpg

比如在Androidfilehost dot com上下载的刷机文件,需要校验文件完整性,查看是否遭到破坏。
在macOS下可以直接在terminal里使用md5命令校验md5值,真的方便(ubuntu等Linux发行版下我没试唉,肯定集成了的)。
可素我不知道Windows下shell中也集成了专门的工具用来校验文件的MD5值、SHA1值、SHA256值的,吼吼吼!命令是:
certutil -hashfile xxx MD5
certutil -hashfile xxx SHA1
certutil -hashfile xxx SHA256

xxx表示将验证文件的绝对路径(地址要填对)
其实就是 C:\Windows\System32 路径下有certutil.exe程序而已啦
而且64位的OS里, C:\Windows\SysWOW64 路径下也有这个程序~
如上图所示,可以直接这样使用来判断从网上下载的文件的完整性是否造成了损坏,大部分情况下都是建议使用专用的下载工具,比如迅雷极速版,因为浏览器自带的下载器很容易造成文件损伤。
知道了这个命令也就不用在百度找什么文件MD5验证工具比如HashMyFiles、HashCalc、WinMD5、Hasher blabla的了,非常简单好用,推荐给大家。
Command Prompt(CMD)、Powershell 均可。

TL-WR720N v3路由刷入openwrt并挂载U盘,编译openwrt,使用barrier_breaker 14.07的imagebuilder编译

TL-WR720N v3

TL-WR720N v3 openwrt官网介绍

TP-LINK WR703N把OpenWrt挂载u盘教程

17

主题

1

好友

676

积分

Workshop Team

Rank: 8Rank: 8

跳转到指定楼层

楼主

sysupgrade
  发表于 2012-11-7 22:10:46  | 只看该作者  | 倒序浏览
本帖最后由 339388279 于 2012-11-8 11:08 编辑

因为系统只有4M空间,不够用,所以我们要把系统挂载在u盘上
根据刷机教程刷好机后,先不能安装luci,不然会内存不足
插上u盘
依次执行下列命令
opkg update
opkg install kmod-usb-storage block-mount kmod-fs-ext4  e2fsprogs
mke2fs -j /dev/sda
mount /dev/sda /mnt
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt -a
umount /tmp/root

完成后,修改/etc/config/fstab 文件,让系统启动自动挂载,修改成如下
config mount
option target   /
option device   /dev/sda
option fstype   ext3
option options  rw,sync
option enabled  1
option enabled_fsck 0

执行如下命令让其生效
/etc/init.d/fstab enable

接着安装 web 控制台
opkg update
opkg install luci
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start

这样就成功把系统挂载到u盘上了

Openwrt手动释放内存

echo 3 > /proc/sys/vm/drop_caches

[OpenWrt] tp-link wr703n刷openwrt挂载u盘攻略

1. 下载openwrt固件到本地,要下载最新的,否则后续安装软件会有冲突.
http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
2. 从web页面直接升级安装
3. 升级完成以后,系统默认没有web界面,需要telnet登陆,ip地址默认为 192.168.1.1,默认没有设置网关信息
4. telnet 登陆 192.168.1.1
5. 设置系统的网络,设置dns,网关等信息,默认没有.需要修改
修改 /etc/config/network
在 config interface ‘lan’ 内添加如下字段

option gateway ‘192.168.1.1’
option dns ‘192.168.1.1’

6. 安装usb,让u盘成为默认的根分区,因为系统只有4M空间,不够用.u盘要现在linux系统里面分区,最好分两个去,一个sda1,一个sda2. sda1作为系统的根分区,sda2可以用来存储文件
执行如下命令安装

opkg update
opkg install kmod-usb-storage block-mount kmod-fs-ext4

7. 安装完成以后,挂载u盘.如下命令将默认的系统盘转移到u盘中.

mount /dev/sda1 /mnt
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt -a
umount /tmp/root

8. 修改 /etc/config/fstab 文件,让系统启动自动挂载,修改成如下

config mount
option target   /overlay
option device   /dev/sda1
option fstype   ext3
option options  rw,sync
option enabled  1
option enabled_fsck 0

执行如下命令让其生效

/etc/init.d/fstab enable

9. 接着安装 web 控制台

opkg update
opkg install luci
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start

10. 安装其他软件
*** Samba ***

opkg install samba36-server
opkg install luci-app-samba
vi /etc/config/samba

*** Transmission ***

opkg install transmission-daemon
opkg install transmission-web
opkg install luci-app-transmission
transmission-daemon
killall transmission-daemon
vi /etc/config

*** LVM ***

opkg install lvm2
lvm
pvcreate /dev/{sdb1,sdc1}
pvscan / pvdisplay
vgcreate usbvg /dev/{sdb1,sdc1}
vgscan / pvscan / vgdisplay
lvcreate -n usblv usbvg
lvscan / lvdisplay
mkfs.ext3 /dev/usbvg/usblv
mount /dev/usbvg/usblv /mnt/share

11. 所有工作完成以后, reboot

12. 设置并激活 swap 分区

mkswap /dev/sda2

修改 fstab 文件,激活

config swap
option device   /dev/sda2
option enabled  1
=====================================================================另方法:

openwrt官网介绍imagebuilder编译

TL-WR720N v3只有 flash 4M,刷入官网openwrt会没有多余空间去挂载u盘,安装其他软件,所以精简模块软件,编译,减小体积,能直接挂载u盘了,增加空间,就能下载软件,就好用了,imagebuilder是最方便的修改安装软件包,编译的方式

vmware centos7

https://archive.openwrt.org/barrier_breaker/14.07/ar71xx/generic/  下载imagebuilder

wget https://archive.openwrt.org/barrier_breaker/14.07/ar71xx/generic/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2
tar -xjf OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

cd OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64

make info 查看所有PROFILE参数,包括packages
make info |grep 720  看profile,

由于make image会下载需要的交叉编译环境,可以设置终端代理
export http_proxy=http://192.168.204.1:1081
export https_proxy=http://192.168.204.1:1081

make image PROFILE="TLWR720" PACKAGES="luci kmod-usb-storage kmod-fs-ext4 e2fsprogs block-mount -firewall -ip6tables -iptables -kmod-ipt-nathelper -odhcp6c"

bin/ar71xx/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin  编译好的bin文件,去刷新固件
bin/ar71xx/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin 是从已经是openwrt的路由刷新固件

TL-WR720N v3 插入U盘,开关拨到3G

web登录路由 192.168.1.1
1.设置密码
2.ssh登录openwrt, mkfs.ext4 /dev/sda1格式化U盘,一直回车
3.system---mount point 设置挂载点(选中上面的Enable this mount),/dev/sda1,挂载点/overlay,格式ext4
4.重启,后登录ssh openwrt,df看/overlay容量是否为U盘容量
openwrt桥接使用,电脑网线连接TL-WR720N v3路由,路由连接wifi上网

openwrt  network--wifi--点击scan  选择wifi点击后面的join network,输入密码,其他默认,下一页点击最下面的save & apply,保存后还会在这个页,会自动连接。(或者在network--interface最下面的wwan,clinet wifi名,点击右边的connect)
进入network--interface,看到刚才新建的桥接,默认名称wwan(下面有client wifi name),如果上面配置完没有自动连接,可以点击连接

 

openwrt 终端命令
opkg update
opkg install kmod-usb2
opkg list_installed
opkg remove name

opkg配置文件 /etc/opkg.conf  /rom/etc/opkg.conf(只读),可以在web上system--software--configuration看到,主要看配置的源地址

 

//刷回官方固件
连接路由,可以登录,设置root密码
ssh root@192.168.1.1
opkg update
opkg install openssh-sftp-server # 不安装不能用xftp传文件
使用xshell的sftp上传固件到/tmp, https://service.tp-link.com.cn/detail_download_918.html
# cat /proc/mtd看是否有firmware块
mtd -r write /tmp/wr720nv3.bin firmware

 

//rz上传 sz下载
opkg install lrzsz
ln -s /usr/bin/lrz /usr/bin/rz
ln -s /usr/bin/lsz /usr/bin/sz

OpenWrt挂载U盘(NTFS)并在网上邻居共享访问

工具/原料

  • 刷好OpenWrt(带LuCI界面)的路由器一台 当然必须带USB接口
  • 软件:putty 用于命令行操作路由器
  • 软件:WinSCP 用于修改路由器配置文件

方法/步骤

  1. 用putty连接路由器,用putty下载安装所需的软件包:(直接复制下面内容到提示符)

    opkg update

    opkg install kmod-usb-core

    opkg install kmod-usb2                #安装usb2.0

    opkg install kmod-usb-ohci            #安装usb ohci控制器驱动

    opkg install kmod-usb-storage         #安装usb存储设备驱动

    opkg install kmod-fs-ext3             #安装ext3分区格式支持组件

    kmod-fs-ext4、kmod-fs-vfat、kmod-fs-ntfs

     

    opkg install kmod-fs-vfat             #挂载FAT

    opkg install ntfs-3g                  #挂载NTFS

    opkg install mount-utils              #挂载卸载工具

    opkg install block-mount

    opkg install luci-app-samba           #SAMBA网络共享服务

    /etc/init.d/samba enable              #启用并开始SAMBA共享

    /etc/init.d/samba restart

    注意 在线安装软件包需保证路由器Wan口可以连接Internet

    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问
  2. 重启路由器 登陆路由器设置界面 可以看到多了挂载点网络共享两个选项(也可全部做完再重启)

    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问
    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问
  3. 用WinSCP连接路由器,打开/etc/hotplug.d/block/10-mount文件(如果不存在请新建)

    修改为如下内容

    #!/bin/sh

     

    # Copyright (C) 2009 OpenWrt.org  (C) 2010 OpenWrt.org.cn

     

    blkdev=`dirname $DEVPATH`

    if [ `basename $blkdev` != “block” ]; then

     

    device=`basename $DEVPATH`

    case “$ACTION” in

    add)

    mkdir -p /mnt/$device

    # vfat & ntfs-3g check

    if  [ `which fdisk` ]; then

    isntfs=`fdisk -l | grep $device | grep NTFS`

    isvfat=`fdisk -l | grep $device | grep FAT`

    isfuse=`lsmod | grep fuse`

    isntfs3g=`which ntfs-3g`

    else

    isntfs=””

    isvfat=””

    fi

     

    # mount with ntfs-3g if possible, else with default mount

    if [ “$isntfs” -a “$isfuse” -a “$isntfs3g” ]; then

    ntfs-3g -o nls=utf8 /dev/$device /mnt/$device

    elif [ “$isvfat” ]; then

    mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=0000 /dev/$device /mnt/$device

    else

    mount /dev/$device /mnt/$device

    fi

    if [ -f /dev/${device}/swapfile ]; then

    mkswap /dev/${device}/swapfile

    swapon /dev/${device}/swapfile

    fi

    ;;

    remove)

    if [ -f /dev/${device}/swapfile ]; then

    swapoff /dev/${device}/swapfile

    fi

    umount /dev/$device

    ;;

    esac

     

    fi

    这段脚本可实现自动挂载,如不想编辑脚本,也可在挂载点中自己设置(PS.没试过)

    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问
  4. 插入U盘或移动硬盘 再次重启路由器 在挂载点中就可以看到已经挂载的设备

    如果U盘只有一个分区,就是/mnt/sda1,第二个分区是/mnt/sda2

    如果用Hub接入多个U盘,第二个设备就是/mnt/sdb,以此类推

    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问
  5. 进入网络共享中,添加共享目录例如/mnt/sda1,权限为777(即完全访问)。

    至此就可以在网上邻居中看到路由器的这个共享文件夹了。

    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问
  6. 注意XP系统 必须保证

    Computer Browser

    Server

    Application Layer Gatway Service

    Windows Firewall/Internet Connection Sharing

    这几个服务开启 并且在本地连接属性中

    Microsoft 网络的文件和打印机共享

    启用时 网上邻居文件才可以访问

    OpenWrt挂载U盘(NTFS)并在网上邻居共享访问

OpenWrt一些小问题的解决方法

Linux 在线模拟器

最近在学习Linux的一些命令的使用,但是很久之前装的Linux虚拟机被删掉了,又不想为了练习几个命令折腾一遍虚拟机。所以,就尝试地搜了一下,看看有没有在线的Linux模拟器可以使用,只要可以练习一下命令的使用即可。在google中用英文关键词一搜,还真有大牛弄出了一些在线的Linux模拟器,而且用起来还不错。搜集了4个,赶紧分享出来,供大家初步学习和实践Linux之用。

一个叫Fabrice Bellard的工程师使用 JavaScript 在浏览器上模拟出了一个 Linux 系统。没有图形化界面,完全使用命令行的方式与之互动。Linux操作系统内核版本为2.6.20。具体使用过程中可以参考jslinux:的FAQ:http://bellard.org/jslinux/faq.html 和技术说明:http://bellard.org/jslinux/tech.html

jslinux:控制台窗口:

image

维也纳一家叫mass:werk media environments的公司使用JavaScript 开发的免费的类UNIX的在线OS。JS/UIX 的使用参考手册地址:http://www.masswerk.at/jsuix/man.txt  同时,开发和使用的JavaScript函数库termlib.js也是免费使用的,可以到公司官网上去下载:http://www.masswerk.at/termlib/

官网上对JS/UIX 的介绍:”JS/UIX is an UN*X-like OS for standard web-browsers, written entirely in JavaScript (no plug-ins used). It comprises a virtual machine, shell, virtual file-system, process-management, and brings its own terminal with screen- and keyboard-mapping.”

JS/UIX 控制台窗口:

image

jor1k是由新西兰的一位叫Benjamin Burns的软件工程师开发的,Benjamin Burns目前就职于位置服务公司Telogis,jor1k是他在github上的开源项目,也是用JavaScript开发的:https://github.com/s-macke/jor1k/

github上关于jor1k的介绍:“jor1k is a OpenRISC 1000 emulator written in JavaScript running Linux. It runs in almost any modern web browser.”

jor1k控制台窗口:

image

cb.vu也是一个用Javascript开发的在线模拟器,系统版本是FreeBSD 7.1-STABLE ,界面是铺满浏览器窗口的,个人感觉使用起来比前面几个都方便一点,一般用这个。

使用过程中可参考TOOLBOX中文版:http://cb.vu/unixtoolbox_zh_CN.xhtml

cb.vu控制台窗口:

image

MySQL创建全文索引

使用索引是数据库性能优化的必备技能之一。在MySQL数据库中,有四种索引:聚集索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FULLTEXT INDEX)。

全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用“分词技术“等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。在这里,我们就不追根究底其底层实现原理了,现在我们来看看在MySQL中如何创建并使用全文索引。

在MySQL中,创建全文索引相对比较简单。例如,我们有一个文章表(article),其中有主键ID(id)、文章标题(title)、文章内容(content)三个字段。现在我们希望能够在titlecontent两个列上创建全文索引,article表及全文索引的创建SQL语句如下:

--创建article表
CREATE TABLE article (
	id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
	title VARCHAR(200),
	content TEXT,
	FULLTEXT (title, content) --在title和content列上创建全文索引
);

上面就是在创建表的同时建立全文索引的SQL示例。此外,如果我们想要给已经存在的表的指定字段创建全文索引,同样以article表为例,我们可以使用如下SQL语句进行创建:

--给现有的article表的title和content字段创建全文索引
--索引名称为fulltext_article
ALTER TABLE article
ADD FULLTEXT INDEX fulltext_article (title, content)

在MySQL中创建全文索引之后,现在就该了解如何使用了。众所周知,在数据库中进行模糊查询是使用LIKE关键字进行查询,例如:

SELECT * FROM article WHERE content LIKE '%查询字符串%'

那么,我们使用全文索引也是这样用的吗?当然不是,我们必须使用特有的语法才能使用全文索引进行查询。例如,我们想要在article表的titlecontent列中全文检索指定的查询字符串,可以如下编写SQL语句:

SELECT * FROM article WHERE MATCH(title, content) AGAINST('查询字符串')

强烈注意:MySQL自带的全文索引只能用于数据库引擎为MyISAM的数据表,如果是其他数据引擎,则全文索引不会生效。此外,MySQL自带的全文索引只能对英文进行全文检索,目前无法对中文进行全文检索。如果需要对包含中文在内的文本数据进行全文检索,我们需要采用Sphinx(斯芬克斯)/Coreseek技术来处理中文。本站将会在后续文章中对Sphinx以及Coreseek进行介绍。

备注1:目前,使用MySQL自带的全文索引时,如果查询字符串的长度过短将无法得到期望的搜索结果。MySQL全文索引所能找到的词的默认最小长度为4个字符。另外,如果查询的字符串包含停止词,那么该停止词将会被忽略。

备注2:如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。