Apr
13
因为网络程序设计课程要求做一个扩展型的作业,其中一个选项是ftp client。于是我就选了这个。
做完以后发现其实不难,而最难的地方,在于了解FTP协议的工作过程。
下面随便闲扯一点东西吧。
在网络上,经常遇到的应用层协议包括HTTP,FTP,SMTP,POP3,都使用TCP协议连接,感觉挺像的。
HTTP协议显然是最常见的,在客户端和服务器之间只有一条连接,既传输控制命令(HTTP头),也传输数据(HTTP实体)
因此在编写动态网页脚本的时候,一定要先输出header,然后才输出HTML代码。
FTP协议则采用两条连接,一条控制连接,一条数据连接。
控制连接用于传输控制命令,始终保持连接,直到客户端发出QUIT命令结束连接;
数据连接在需要传输数据的时候打开(发起端可以是客户端也可以是服务器),传输完毕后就断开。
FTP的数据连接有两种模式,一种是主动模式,一种是被动模式(PASV, Passive Mode)。
采用主动模式时,客户端监听一个本地端口,由服务器发起连接传输数据;
而采用被动模式时,则是由服务器打开一个端口,客户端发起连接接收数据。
下面我用telnet来模拟一个FTP客户端连接、登陆、使用被动模式传输文件并退出的完整过程:
做完以后发现其实不难,而最难的地方,在于了解FTP协议的工作过程。
下面随便闲扯一点东西吧。
在网络上,经常遇到的应用层协议包括HTTP,FTP,SMTP,POP3,都使用TCP协议连接,感觉挺像的。
HTTP协议显然是最常见的,在客户端和服务器之间只有一条连接,既传输控制命令(HTTP头),也传输数据(HTTP实体)
因此在编写动态网页脚本的时候,一定要先输出header,然后才输出HTML代码。
FTP协议则采用两条连接,一条控制连接,一条数据连接。
控制连接用于传输控制命令,始终保持连接,直到客户端发出QUIT命令结束连接;
数据连接在需要传输数据的时候打开(发起端可以是客户端也可以是服务器),传输完毕后就断开。
FTP的数据连接有两种模式,一种是主动模式,一种是被动模式(PASV, Passive Mode)。
采用主动模式时,客户端监听一个本地端口,由服务器发起连接传输数据;
而采用被动模式时,则是由服务器打开一个端口,客户端发起连接接收数据。
下面我用telnet来模拟一个FTP客户端连接、登陆、使用被动模式传输文件并退出的完整过程:
Feb
16
@ 2010-08-20 BS一下不看manpage的自己
也就是说,只需要用 sed -i 就可以直接替换文件中的内容
======以前的分割线======
要用sed批量修改文件的内容,但是用这个命令解决不了问题:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} > {} \;
因为bash把 > 解释为find命令输出的重定向。
修改一下:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} \> {} \;
还是不行,因为 sed 去寻找一个名为 > 的文件进行处理
再修改:
find -name "*.php" -exec "sed -e 's/aaa/bbb/' {} \> {} " \;
还是不行,因为find去找一个名为 "sed -e 's/aaa/bbb/' {} \> {} " 的程序来执行
那是囧之又囧阿。于是去baidu,去google,
但是无论baidu还是google "find -exec 重定向"
都搜不到相应的解决方案,这样的问题居然没有人遇到过?
于是用google搜了一下
搜到了这一页: http://www.loisch.de/linux.html
看来还是国人太ooxx了,sigh。
解决方案其实很简单:绕个弯,把 -exec 的命令给shell来执行
注意:下面的命令一定不要在有用的文件上直接尝试!!!!!!
哦也!没有错误提示了!
然后 ls -al 一下,爽!所有文件大小都变成 0 了!
为什么捏?那篇文章里面解释了:
因为bash检测到需要重定向到那个文件,所以事先把那个文件清空了。
那篇文章里面提到一个修改bash配置的解决方案,但是不通用,建议还是用他说的第二种方案:
嘿,这下爽了!
引用
$ man sed
...
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
...
...
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
...
======以前的分割线======
要用sed批量修改文件的内容,但是用这个命令解决不了问题:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} > {} \;
因为bash把 > 解释为find命令输出的重定向。
修改一下:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} \> {} \;
还是不行,因为 sed 去寻找一个名为 > 的文件进行处理
再修改:
find -name "*.php" -exec "sed -e 's/aaa/bbb/' {} \> {} " \;
还是不行,因为find去找一个名为 "sed -e 's/aaa/bbb/' {} \> {} " 的程序来执行
那是囧之又囧阿。于是去baidu,去google,
但是无论baidu还是google "find -exec 重定向"
都搜不到相应的解决方案,这样的问题居然没有人遇到过?
于是用google搜了一下
引用
linux find using "-exec" sed redirect
搜到了这一页: http://www.loisch.de/linux.html
看来还是国人太ooxx了,sigh。
解决方案其实很简单:绕个弯,把 -exec 的命令给shell来执行
注意:下面的命令一定不要在有用的文件上直接尝试!!!!!!
引用
find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}" \;
哦也!没有错误提示了!
然后 ls -al 一下,爽!所有文件大小都变成 0 了!
为什么捏?那篇文章里面解释了:
因为bash检测到需要重定向到那个文件,所以事先把那个文件清空了。
那篇文章里面提到一个修改bash配置的解决方案,但是不通用,建议还是用他说的第二种方案:
引用
find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}.tmp; mv -f {}.tmp {}" \;
嘿,这下爽了!
Feb
15
发信人: Felix021 (Felix), 信区: Linux_Unix
标 题: 校园网锐捷客户端 newstar for linux 情人节专版 (傻瓜化操作)
发信站: BBS 珞珈山水站 (Sun Feb 15 03:21:19 2009)
(附件的tarball里包含源代码和编译好的x86_32的可执行程序)
花了不少时间整这个东西,现在用起来相当简单了。
下载下来,解压,运行 ./install.sh 输入管理员密码,就安装好了。
要联网,运行newstar,不需要再输密码,
程序自动在后台与服务器通信,不需要留着一个terminal
也不需要nohup, screen, setsid什么的了。
其他还要手动的地方就是添加到开机自启动脚本/etc/rc.local里面去。
当然,也可以添加到 会话 里面,但是这个是在X Window登录以后才运行的。
过几天会搞个ASUS WL-520GU无线路由,能刷linux(如dd-wrt固件)
看看能不能把newstar集成进去,待续。。。
--
newstar for linux @ 2009-02-14 情人节专版(修正日志读取与清除的BUG)
下载文件 (已下载 2102 次)
本程序由felicia(feliciacrazy@qq.com修改自superstar源码
由felix021(felix021@gmail.com)添加连接和注销之外的功能
注: 第1,2步可以直接运行 sudo ./install.sh 来完成
1. 编译
标 题: 校园网锐捷客户端 newstar for linux 情人节专版 (傻瓜化操作)
发信站: BBS 珞珈山水站 (Sun Feb 15 03:21:19 2009)
(附件的tarball里包含源代码和编译好的x86_32的可执行程序)
花了不少时间整这个东西,现在用起来相当简单了。
下载下来,解压,运行 ./install.sh 输入管理员密码,就安装好了。
要联网,运行newstar,不需要再输密码,
程序自动在后台与服务器通信,不需要留着一个terminal
也不需要nohup, screen, setsid什么的了。
其他还要手动的地方就是添加到开机自启动脚本/etc/rc.local里面去。
当然,也可以添加到 会话 里面,但是这个是在X Window登录以后才运行的。
过几天会搞个ASUS WL-520GU无线路由,能刷linux(如dd-wrt固件)
看看能不能把newstar集成进去,待续。。。
--
newstar for linux @ 2009-02-14 情人节专版(修正日志读取与清除的BUG)

本程序由felicia(feliciacrazy@qq.com修改自superstar源码
由felix021(felix021@gmail.com)添加连接和注销之外的功能
注: 第1,2步可以直接运行 sudo ./install.sh 来完成
1. 编译
Aug
22
from http://www.5dlinux.com/article/1/2007/linux_10628.html
可能玩Linux的朋友都知道fstab这个文件,如果要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab则是其中之一。这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。因此,我们需要理解其中的内容,了解它如何与 mount命令配合工作,并能够针对自己的情况进行修改。
作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。如果遇到一些类似于无法挂载你的windows分区阿,无法使用你的光驱阿,无法对某个分区进行写入操作阿什么的,那么基本上可以断定,你的fstab内容有问题了。也就是说,你可以通过修改它来搞定这些问题,而不用去论坛冰天雪地裸体跪求答案了。
可能玩Linux的朋友都知道fstab这个文件,如果要用好linux,熟悉linux的一些核心配置文件是必要的,而fstab则是其中之一。这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作。因此,我们需要理解其中的内容,了解它如何与 mount命令配合工作,并能够针对自己的情况进行修改。
作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分区和存储设备的信息,以及它们应该挂载到哪里,以什么样子的方式挂载。如果遇到一些类似于无法挂载你的windows分区阿,无法使用你的光驱阿,无法对某个分区进行写入操作阿什么的,那么基本上可以断定,你的fstab内容有问题了。也就是说,你可以通过修改它来搞定这些问题,而不用去论坛冰天雪地裸体跪求答案了。
Jun
24
from http://linuxdesktop.cn/2008/06/15/wine-10-donwloads/
原定于最多只有两个RC版、并于6月1日发布的Wine 1.0,却于两天前发布了第五个RC版,并定新的发布日期为6月20日。
Wine 1.0的特性早已冻结,这么多的RC版只能说明Wine 1.0还是Bug多多。不过好在Wine 1.0 RC5是最后一个RC版了。
今天Wine 1.0正式版发布,比预定的提前两天。
—–
Wine 1.0 RC5修正了自RC4以来的近40个Bug,进一步改善了运行Windows软件的兼容性和稳定性。
一个令大多数中文用户高兴的是,RC5版修改了由SCIM中文输入法导致的窗口显示缓慢的问题。因此强烈推荐所有既使用Wine,也使用SCIM的用户更新。这个版本会带来较大的性能和稳定性的提升。
而最新发布Wine 1.0正式版则继续在RC5的基础上修正了20个Bug,估计大多Bug已基本修正。
Linux用户可以从Wine的主页找到对应自己的发行版的安装包进行下载,访问Wine主页。
其中Ubuntu 8.04的用户可以直接下面两个对应平台的deb包
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.0.0%7Ewinehq0%7Eubuntu%7E8.04-1_i386.deb
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.0.0%7Ewinehq0%7Eubuntu%7E8.04-1_amd64.deb
诚挚地向这个开发了十五年的自由软件表示祝贺!未来还有新的路要走!
_____
这个版本的Wine非常牛B了,3Dmark2003可以跑,Nebula和VitualNES都OK,还有居然可以跑Gridwars,相当神气阿~~
原定于最多只有两个RC版、并于6月1日发布的Wine 1.0,却于两天前发布了第五个RC版,并定新的发布日期为6月20日。
Wine 1.0的特性早已冻结,这么多的RC版只能说明Wine 1.0还是Bug多多。不过好在Wine 1.0 RC5是最后一个RC版了。
今天Wine 1.0正式版发布,比预定的提前两天。
—–
Wine 1.0 RC5修正了自RC4以来的近40个Bug,进一步改善了运行Windows软件的兼容性和稳定性。
一个令大多数中文用户高兴的是,RC5版修改了由SCIM中文输入法导致的窗口显示缓慢的问题。因此强烈推荐所有既使用Wine,也使用SCIM的用户更新。这个版本会带来较大的性能和稳定性的提升。
而最新发布Wine 1.0正式版则继续在RC5的基础上修正了20个Bug,估计大多Bug已基本修正。
Linux用户可以从Wine的主页找到对应自己的发行版的安装包进行下载,访问Wine主页。
其中Ubuntu 8.04的用户可以直接下面两个对应平台的deb包
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.0.0%7Ewinehq0%7Eubuntu%7E8.04-1_i386.deb
http://wine.budgetdedicated.com/apt/pool/main/w/wine/wine_1.0.0%7Ewinehq0%7Eubuntu%7E8.04-1_amd64.deb
诚挚地向这个开发了十五年的自由软件表示祝贺!未来还有新的路要走!
_____
这个版本的Wine非常牛B了,3Dmark2003可以跑,Nebula和VitualNES都OK,还有居然可以跑Gridwars,相当神气阿~~
Apr
15
锐捷官方提供的 xrgsu 程序的破解版(破解多网卡限制)
是 ykrocku 制作的
这里面附带了xrgsu 运行所需的库:
libpcap.so.0.6.2
libpcap.so.0.8.3
libstdc++.so.5.0.7
注:下载已失效,建议到googlecode上面找开源的锐捷替代程序。
是 ykrocku 制作的
这里面附带了xrgsu 运行所需的库:
libpcap.so.0.6.2
libpcap.so.0.8.3
libstdc++.so.5.0.7
注:下载已失效,建议到googlecode上面找开源的锐捷替代程序。
Apr
10
很早就安装了Apache和PHP,http://localhost可以看到It Works, 在bash下php也可以运行
但是http://localhost/test.php总是弹出一个下载.phtml的窗口,相当郁闷
搜了网上很多方法,比如在 httpd.conf 里面添加AddType阿,重新安装libapache2-mod-php5阿,都不行
鼓捣了很久才搞定。
方法是:
1。卸载所有相关的程序(如下)
2。安装所有相关的程序
sudo apt-get install apache2 libapache2-mod-php5 php5 mysql-server php5-mysql php5-gd phpmyadmin
但是http://localhost/test.php总是弹出一个下载.phtml的窗口,相当郁闷
搜了网上很多方法,比如在 httpd.conf 里面添加AddType阿,重新安装libapache2-mod-php5阿,都不行
鼓捣了很久才搞定。
方法是:
1。卸载所有相关的程序(如下)
2。安装所有相关的程序
sudo apt-get install apache2 libapache2-mod-php5 php5 mysql-server php5-mysql php5-gd phpmyadmin
Apr
10
在Bash中实现类似windows中pause命令的暂停功能:
read -n1 -p "Press any key to continue..."
解释:
-n1 读取一个字符
-p 提示
read -n1 -p "Press any key to continue..."
解释:
-n1 读取一个字符
-p 提示