2006年09月17日

发信人: mutecat ((I love Linux)), 信区: Linux
标  题: 我和Linux
发信站: 武汉白云黄鹤站 (2006年09月16日13:41:45 星期六), 站内信件

  by mutecat@byhh

  题记:

      好久没有在Linux版发表原创了,在自己申请版三之际,谨以此文献给所有热爱

Linux的忠实朋友们,也趁机为自己加点人气^_^

 

一. 我和Linux的缘分

    像很多人一样,我接触Linux也完全是偶然,是听朋友介绍的,然后就糊里糊涂的爱上她

了,呵呵…

    大一快暑假的时候第一次安装Linux,选择的发行版是RedHat 9,和很多新手一样,安装

的过程并不顺利,那时候对电脑软硬件都是一窍不通,别人说ntfs,vfat之类的都是一头

雾水,也不怪自己,上大学之前基本上没碰过电脑。在朋友的帮助下最后还是一切都搞好

了,接下来就开始自己的Linux之旅了。

二. 最初的追求

    当时觉得Linux界面真丑,但是也没介意,毕竟我用它是做服务器的,不是浏览网页的.

进Linux的第一件事情当然是想着如何上网,这个也是别人教我的,因为一开始只会cd,ls

两个命令$@#$@@.下面就开始着手如何让他变得好看一点,试了网上说的各种方法,把系统

搞得崩溃了N次,当然也重装了N次,在这N次重装的过程中,也是一个学习进步的过程,毕竟

什么分区啊,命名啊,grub都要了解一点的. 可是很不幸,最后还是那么丑. 在放弃了美化

界面之后,就开始根据自己的需要装各种软件了,输入法选择了fctix,上bbs用qterm,上

qq用Lumaqq,字符终端输入用zhcon,听歌,看电影用xmms,mplayer,等等. 我想让她在我手

里变得完美,可是那是不现实的,不能用bt,不能看office文档,尽管有openoffice,永中

office,可他们和ms兼容的并不是很好. 可这并不影响我对Linux的好感,为什么? 因为她

是开源的,这意味着你可以学到windows下面学不到的东西,比如对操作系统的认识,有很多

源码可以阅读,也有很好的试验环境.

三. 走上正轨

    可能你看到这个标题有点惊讶,不错,美化界面,拼命寻找各种软件都不是一个Linux

爱好者真正需要的东西,windows漂亮而且安装软件方便,如果我们寻求这些,那么你只会

觉得Linux一无是处,除了开源. Linux真正值得我们去寻求的是什么? 是她下面的各种

应用: 服务器配置,网络开发,内核移植. 学习一样东西最重要的就是去实践,给自己机会

去做,去闯.当时一个师兄做了一个用php和perl制作的网站, 在Linux方面他是我的前辈,

所以我经常和他探讨,他也给我一些任务去完成,比如在网站上添加留言板等等.. 所以

我最初涉及到的Linux下的开发就是php和perl网页编程了.

四. 迷失方向

     php和perl学了一段时间,毫无成就感,因为一点成果都没有. 尽管网上有大量的

资料可以学习,有好的书籍可以参考,照着别人的代码敲了一遍,效果也有了,可是总觉得

哪里出了问题. 网页做出来很丑,可能是这个影响到了积极性,自己没有美工基础,所以

最后还是放弃了.

五. 进入服务器领域

    由于在一个团队里面学习,正好团队里面的服务器是Linux系统,我就承担了’网络管理

员’的职责,刚开始并不能胜任,毕竟是刚接触.但是自己一直努力学习,并向团队里面的各位

前辈讨教.在此期间,有bbs的移植任务,ftp的搭建任务等等,这些都给了我锻炼的机会,也是

这个时候开始有了自信,不管怎么说我也有一两手了啊^_^. Linux在服务器领域的确占有优

势,bbs服务器,ftp服务器,www服务器,socks,squid代理服务器都可以在Linux下搭建.

六. Linux的精髓-内核

    和很多人一样,刚开始接触它,觉得它很高深,可望而不可及. 但是当你慢慢了解它之后

,你就会觉得它真的很神奇. 我曾经想着去读Linux内核源码,热情空前的高涨,选择的书籍

是同济大学赵炯博士的<<Linux内核完全注释>>.当时汇编,操作系统都没学,真是看得一点

信心也没有了,后来向老师讨教,他觉得没有必要去读Linux的源码,所以最后也就不再去读

源码了. 那我们用Linux的内核可以干什么事情呢? 内核裁减,嵌入式开发! 从老师那里得

到一个任务:对Linux最小化裁减,使其胜任网关需求.  很有挑战性吧,呵呵….确实,很有

意思的东西. 这个一做就是一学期,当然整体上完成它我只花了不到一个月的时间,但是测

试,功能的完善花了大量的时间,这段时间是我的Linux水平飞速提高的阶段,一个学期下来

,对Linux系统可谓了如指掌,因为内核裁减,文件系统的裁减这些基本上涵盖了Linux下的所

有东西. 最后完成了裁减的Linux网关,UsbLinux,这是我最引以自豪的事情.

ps: 建议热爱Linux的朋友们不妨试着去裁减一下Linux.

七. Linux下的网络编程

    不管在什么平台下,都会涉及到编程的问题,Linux下的网络开发相对windows下比较

方便. 一开始学编程也是根据别人的文章,写最基本的客户服务器程序,实现通信. 后来

团队里面有了任务,要求写一个网络小软件,这个小软件很有意思,自己也很感兴趣去写,

尽管最后还是没有很完美的去完成它,但是这个过程让我对网络编程产生了兴趣.

后纪:

   有很多话想说,总觉得有点罗嗦,就到此为止吧. 最后想告诉大家,Linux需要你去深入的

研究,需要你去理解它.当你有一天觉得自己很牛的时候,别忘了与大家分享你的经验.


 ┏━━━━┓┏┓    ┏┓┏━━━━┓┏━━━┓┏━━━┓┏━━━┓┏━━━━┓
 ┃┏┓┏┓┃┃┃    ┃┃┗━┓┏━┛┃┏━━┛┃┏━━┛┃ ┏┓ ┃┗━┓┏━┛
 ┃┃┃┃┃┃┃┃    ┃┃    ┃┃    ┃ ____) ┃┃      ┃ ┗┛ ┃    ┃┃
 ┃┃┃┃┃┃┃┗━━┛┃    ┃┃    ┃┗━━┓┃┗━━┓┃┏━┓┃    ┃┃
 ┗┛┗┛┗┛┗━━━━┛    ┗┛    ┗━━━┛┗━━━┛┗┛  ┗┛    ┗┛
                    http://blog.donews.com/mutecat
※ 来源:·武汉白云黄鹤站 bbs.whnet.edu.cn·

2006年09月12日

大学的目的到底是为了什么?李开复教授回答

Q:  大学的目的到底是什么?

A:  我的第四封信就是针对这个问题所写的。
下面是写第四封信之前的一些回答。
读大学的目的不是为了获得一纸文凭。在大学里,最重要的事情是打好基础、学习如何学
习、培养独立思考学习、离开家庭独立的机会、练习与人相处的技巧,这也是人生一次专
注学习的机会。”让大学对自己有用”是自己的责任。如果一个人感觉大学学的”没用”
,很可能是因为自己没有把握自己需要的、并且主动去追求。
1、打好基础:很多学生急迫地想学习”管理”,或其他社会地位高的职位只是。但是,大
学不是”职业培训班”,而是一个能让自己能适应社会,做各种不同的工作的平台。这个
平台的基础就是基础课程。大学时,一定要把一些基础知识–数学、英语、还有你的专业
基础课程,如经济、财务、会计、编程、写作、化学、物理等等–学好。在科技发达的今
天,学这些不变的基础才是最重要的。有些高深的技术,几年后就会改变。而且没有好的
基础,也学不会高深的技术。最后,在中国的大学里,基础课程教授水平还不错,但是高
深的课程,却令很多教授无法胜任。
2、学习的能力:专业知识固然重要,但是大学毕业生更重要的是思想的能力、学习新东西
的能力。因为未来的世界会有很大的改变,所以熟悉旧知识不如有学习新知识的能力。
3、找到你的兴趣:大学阶段最重要的考研准备是通过你对自己专业的体验和对其他专业的
了解而来。你需要明白和验证自己的兴趣和特长所在,以便逐渐确定今后研究生阶段的专
业方向。
大学生活中,很多学生很容易就恢复过去被动的习惯。因此大学生必须尽快地明确自己的
目标。”毕业”不是一个目标。远期的目标是人生目标,中期的目标是职业、出国、读研
。近期的目标是要把英语学好、要去旁听自己有兴趣的课、要通过某些考试、要参加社团
、要提升沟通或演讲的能力。这些目标因人而异,但是每个人都必须考虑自己的兴趣以及
客观条件,并逐步地进行和调整。
4、练习与人相处的能力:第一次离开家门,会开始遇到很多人际间的矛盾,但是未来在社
会里与人相处的能力会越来越重要。你必须培养与人相处的能力。培养的方法很多,打工
、社团、交友都是方法。在学业上了正常轨道的前提下,你可以慢慢去培养。我们不能与
人和睦相处,问题很可能出在自己身上。在他人身上所见到的,往往是自己所反射出去的
态度与情感的回应,就像照镜子一样,我们的表情、态度,可以由他人对我们的表情和态
度上一览无遗。因此,在我们和他人的关系中,如果我们本身不友善,他人对我们也不会
友善。如果我们不信任别人,他们也不会信任我们。如果我们敌视别人,那别人也会敌视
我们。战争的爆发就是这么来的。
5、找合适的老师:尽量找年轻、动手做事的老师。如果要从事研究工作,那么就找从国外
归来的老师;如果将来要参加工作,那么尽量找有过开公司经验的。
6、打好扎实的基础,欲速则不达:很多同学问我该选择什么领域,或该学什么计算机语言
。很多同学才读大二,就决定将来”要做管理”。这类问题一方面没有考虑自己的才华、
兴趣,另一方面太急迫了。大学最重要的是要把基础打好,学东西要按部就班,不可能一
步登天。打基础是苦功夫,不愿吃苦却想成才是不可能的。
7、不要以为在大学功课好就够了:在二十一世纪的今天,人才已是国际的概念。你不能只
因为在你的大学过关或成绩不错就自满。上MIT OCW,去做做MIT的课程、功课、考题。如
果能达到好的成绩,这时候你就可以自信地面向国际了。掌握自学能力很重要,因为中学
和大学的一个分界线是大学里的很多东西需要自学,而且以后走上工作岗位以后很多东西
也需要自学。如果在大学阶段没有学会自学,那么以后很容易就会落后。毕业之后,所有
的学习都要靠自己,所以学习自习是大学期间重要的一环。
8、事分清轻重缓急:人生的每个阶段都有那个阶段最重要最急需完成的事情。比如,在大
学阶段,学习文化课,掌握自学的能力,和开阔视野是最重要的。文化专业课重要,因为
成绩不好会影响毕业,深造或就业,也因为对于很多人来说专业知识和技能影响了他一生
从事的职业,同时因为离开了学校以后再也没有机会这样系统地,专一地,不受任何干扰
的学习机会。
9、开阔视野:因为大学是开阔视野的最好的地方(有图书馆,各科的老师,五湖四海的同
学);更因为很多大学生还没有吃准自己的职业兴趣所在,开阔视野有助于自己找到自己
最感兴趣和最擅长的方面。
10、融会贯通:任何一种能力和修养的培养都不是彼此孤立的。比如,有些专业课有实践
项目,几个同学合作,既是上好专业课的一部分,也是培养合作精神的途径。
11、主要应以学业为主:不要浪费了在大学宝贵的四年。这是你一生有最多独立学习时间
的地方。

12、以目标为中心:你应该想想自己的目标,还有需要培养什么样的能力。

不要认为学什么专业你就一定要干那一行。比尔盖茨是学法律的,Sun的Scott McNealy是
学经济的,HP的Carly Fiorina是学哲学和中古文学专业的。无论你想走那一行,只要毕业
后努力,都还是有机会的

2006年09月11日

发信人: wangchun (luckydog<->mutecat), 信区: DianLinux
标  题: 生活启示(zz)
发信站: 喻信星空 (2006年04月19日12:43:56 星期三), 站内信件

   01.每天告诉自己一次,“我真的很不错”。

   02.生气是拿别人做错的事来惩罚自己。

   03.生活中若没有朋友,就像生活中没有阳光一样。

   04.明天的希望,让我们忘了今天的痛苦。

   05.生活若剥去理想、梦想、幻想,那生命便只是一堆空架子。

   06.发光并非太阳的专利,你也可以发光。

   07.愚者用肉体监视心灵,智者用心灵监视肉体。

   08.获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的。

   09.贪婪是最真实的贫穷,满足是最真实的财富。

   10.你可以用爱得到全世界,你也可以用恨失去全世界

   11.人的价值,在遭受诱惑的一瞬间被决定。

   12.年轻是我们唯一拥有权利去编织梦想的时光。

  13.青春一经典当即永不再赎。

  14.没有了爱的语言,所有的文字都是乏味的。

  15.真正的爱,应该超越生命的长度、心灵的宽度、灵魂的深度。

  16.爱的力量大到可以使人忘记一切,却又小到连一粒嫉妒的沙石也不能容纳。

  17.当一个人真正觉悟的一刻,他放弃追寻外在世界的财富,而开始追寻他内心世界的  真正财富。

  18.只要有信心,人永远不会挫败。

  19.不论你在什么时候开始,重要的是开始之后就不要停止。

  20.不论你在什么时候结束,重要的是结束之后就不要悔恨。

  21.人若软弱就是自己最大的敌人。

  22.人若勇敢就是自己最好的朋友。

  23.如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。

  24.抱最大的希望,为最大的努力,做最坏的打算。

  25.家!甜蜜的家!天下最美好的莫过于家。

  26.游手好闲会使人心智生锈。

  27.每一件事都要用多方面的角度来看它。

  28.有理想在的地方,地狱就是天堂。

  29.有希望在的地方,痛苦也成欢乐。

  30.所有的胜利,与征服自己的胜利比起来,都是微不足道。

  31.所有的失败,与失去自己的失败比起来,更是微不足道。

  32.上帝从不埋怨人们的愚昧,人们却埋怨上帝的不公平。

  33.美好的生命应该充满期待、惊喜和感激。

  34.世上最累人的事,莫过于虚伪的过日子。

  35.觉得自己做的到和不做的到,其实只在一念之间。

  36.第一个青春是上帝给的;第二个的青春是靠自己努力的。

  37.少一点预设的期待,那份对人的关怀会更自在。

  38.思想如钻子,必须集中在一点钻下去才有力量。

  39.人只要不失去方向,就不会失去自己。!

  40.如果你曾歌颂黎明,那么也请你拥抱黑夜。

  41.问候不一定要慎重其事,但一定要真诚感人。

  42.人生重要的不是所站的位置,而是所朝的方向。

  43.当你能飞的时候就不要放弃飞。

  44.当你能梦的时候就不要放弃梦。

  45.当你能爱的时候就不要放弃爱。

  46.生命太过短暂,今天放弃了明天不一定能得到。

  47.天才是百分之一的灵感加上百分之九十九的努力。

  48.人总是珍惜未得到的,而遗忘了所拥有的。

  49.快乐要懂得分享,才能加倍的快乐。

  50.自己要先看得起自己,别人才会看得起你。

  51.一个今天胜过两个明天。

  52.要铭记在心;每天都是一年中最美好的日子。

  53.乐观者在灾祸中看到机会;悲观者在机会中看到灾祸。

  54.有勇气并不表示恐惧不存在,而是敢面对恐惧、克服恐惧。

  55.肯承认错误则错已改了一半。

  56.明天是世上增值最快的一块土地,因它充满了希望。

  57.理想的路总是为有信心的人预备着。

  58.所有欺骗中,自欺是最为严重的。

  59.人生最大的错误是不断担心会犯错。

  60.把你的脸迎向阳光,那就不会有阴影。

  61.经验是由痛苦中粹取出来的。

  62.机会从不会“失掉”,你失掉了,自有别人会得到。

  63.用最少的浪费面对现在。

  64.用最多的梦面对未来。

  65.快乐不是因为拥有的多而是计较的少。

  66.你的选择是做或不做,但不做就永远不会有机会。

  67.如你想要拥有完美无暇的友谊,可能一辈子找不到朋友。

  68.不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

  69.把自己当傻瓜,不懂就问,你会学的更多。

  70.要纠正别人之前,先反省自己有没有犯错。

  71.因害怕失败而不敢放手一搏,永远不会成功。

  72.要克服生活的焦虑和沮丧,得先学会做自己的主人。

  73.你不能左右天气,但你能转变你的心情。

  74.孤单寂寞与被遗弃感是最可怕的贫穷。
  

  75.想象力比知识更重要。

  76.漫无目的的生活就像出海航行而没有指南针。

  77.好好扮演自己的角色,做自己该做的事。

  78.一切伟大的行动和思想,都有一个微不足道的开始。

  79.得意时应善待他人,因为你失意时会需要他们。

   80.学做任何事得按部就班,急不得。

     mutecat 加油!!
     喜欢是浅浅的爱,爱是深深的喜欢
 健康乐观、积极向上的生活!
欢迎访问我的blog  http://blog.donews.com/mutecat
~

发信人: wangchun (mutecat), 信区: DianLinux
标  题: 利用expect实现自动交互
发信站: 喻信星空 (2006年07月28日17:51:13 星期五), 站内信件

 

by  wangchun@yxxk( mutecat@byhh )

题纪:

    作为喻信服务器的管理员,前几天要实现一个定时更新mysql数据库的脚本,本来

用crond这个守护进程很好实现,只要编辑/var/spool/cron/root,在里面加入一行:

00 2 *  *  *(cd /usr/local/mysql/data; ./quotaget.sh; mysql -p < update.sql)

也即是在每天凌晨2:00自动更新数据库。关于crontab的语法可以参考:

 http://www.wanglimin.com/Tutorial/HP-UNIX/docs/hp-ux07.htm

但是遇到了一个问题,即执行mysql -p < update.sql这条语句时,需要用户输入密码。

尽管shell功能很强大,但对于需要用户输入密码的程序,shell并不能非交互的运行,

于是上网搜索到了expect这个工具,用了才知道这个工具对于一个系统管理员来说是多

么的有价值。

 

    Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:

   (Expect is a software suite for automating interactive tools。

    Expect的官方主页对它作了如下介绍:
    Expect is a tool for automating interactive applications such as telnet,
    ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this stuff
    trivial. Expect is also useful for testing these same applications. And
    by adding Tk, you can also wrap interactive applications in X11 GUIs.

    Expect是基于TCL的,作为一个脚本语言,expect能在无需管理员参与的情况下实现

自动交互(比如passwd,fsck,telnet等),expect也能用于自动测试一些应用程序。

    expect的语法和shell的语法非常相似,它支持函数调用,有while语句,switch

语句。

1)    expect使用spawn调用其他的执行程序,比如

    spawn  telnet  218.199.20.98  2600

    但是在使用的过程中发现spawn不支持管道和重定向,也就是说对于

        ls |more ; mysql -p < update.sql 这样的命令spawn不能正确解析。

    解决的办法是把这些命令放到一个shell脚本里面,在用spawn执行这个shell

    脚本。

2)    expect 创建子函数使用proc标志,也即:

    proc  functionname { parameter1,parameter2 } {
       ……

    }

    调用子函数非常简单

    functionname  $param1 $param2

3)  expect  使用expect ,send 组合实现自动交互 ,语法如下:

    expect {
            "login;"  {  send  "$user\n"   }
            "passwd:" {  send  "$passwd\n" }

    }
    使用send的使用后面的内容不显示给用户,如要显示给用户,应使用send_user

4) 注意点:

   1. expect里面基本是都是使用{} 而不是使用(),比如函数参数输入外面应用{},

应该是while { } 而不是 while ( ).

   2. { 应和其他符合有空格, expect { 正确,expect{ 就会报错.

   3.  spawn 不支持管道和重定向.

5) 下面是实现的mysql数据库自动更新的expect脚本:

   proc do_console_login {pass} {

        set timeout 5

    set done 1

    while { $done } {
                expect {
                          "password:" {
                               send "$pass\n"
                          }
                          eof {
                                set done 0
                          }
                }
    }
   }

   if {$argc<1} {

        puts stderr "Usage: $argv0  password.\n "
        exit 1
   }

   set PASS    [lindex $argv 0]

   spawn   /usr/local/mysql/data/updatemysql

   do_console_login  $PASS

 

         mutecat 加油!!
      健康乐观、积极向上的生活!
    喜欢是浅浅的爱,爱是深深的喜欢
欢迎访问我的blog  http://blog.donews.com/mutecat
~
※ 来源:·喻信星空 bbs.eistar.net·[FROM: 222.20.73.221]

发信人: mutecat ((I love Linux)), 信区: Linux
标  题: [原创]pserver认证方式配置CVS服务器(4)
发信站: 武汉白云黄鹤站 (2006年07月05日09:38:32 星期三), 站内信件

   ok,服务器端都配置好了.

   最后确认一下cvspserver是否已经启动,cvs是否已经初始化好.

   下面登陆cvs服务器试试.

   在Linux客户端可以使用下面的命令登陆:

   cvs -d :pserver:mutecat@218.199.20.98:/CVS login

   在windows客户端使用软件wincvs登陆,命令与上面的一样.

    参考资料1:

    CVS–并行版本系统 v1.11.4: 手册

        http://www.soforge.com/cvsdoc/zh_CN-1_11_4/book1.html

 

 


     mutecat 加油!!
     我爱我的姐姐!
 健康乐观、积极向上的生活!
欢迎访问我的blog  http://blog.donews.com/mutecat

发信人: mutecat ((I love Linux)), 信区: Linux
标  题: [原创]pserver认证方式配置CVS服务器(3)
发信站: 武汉白云黄鹤站 (2006年07月05日09:34:17 星期三), 站内信件

    pserver方式客户端使用明文传输,所以CVS使用了一个独立的CVS密码文件,来保证
用户连接源码库的时候不会危及定期密码的安全。这个独立的密码文件就是上面提到的
passwd文件.

    passwd文件里面的密码字段使用crypt函数加密,可惜的是目前为止passwd文件只能
通过其它方式拷贝,cvs并没有配备相应的命令生成它.

    我使用htpasswd这个命令生成它的

    $cd  /CVS/CVSROOT
    $htpasswd  passwd  mutecat

    则会在当前目录下生成文件passwd,内容类似下面:

    mutecat:zN123SKbsadCKI

    和前面的相比少了一个本地用户,再后面加上系统用户即可.

    修改后的passwd文件如下:

    mutecat:zN123SKbsadCKI:cvsroot

    共享一个系统用户的好处是便于安排源码库中的权限。

    cvs的权限是通过/CVS/CVSROOT/readers 和writers这两个文件控制的.

    下面摘自参考资料1

    为一位用户指定只读访问(权限),这里有两种方式:依靠“包含”和依靠“排除”

   “包含”意思是在/CVS/CVSROOT/readers内列出特定的使用者的名字。这个文件是一

个以简单换行符分隔的用户列表。这里有一个简单的readers文件:

    mutecat

    wiki

    (不要忘记在最后一个使用者之后的换行符。)

   “排除”意指显示列出有写入访问权限的每一位用户。如果文件

    /CVS/CVSROOT/writers

    存在,那么只有列入该文件内的用户有写入权限,而没有列入其内的其他人只有读

取权限(当然,即使只读权限的用户仍需被列在CVS passwd文件之内)。writers文件与

readers文件有相同的格式。

    注意:如果你的CVS passwd文件将CVS用户映射到系统用户,你要确信拒绝或允许

使用cvs用户名而不是系统用户名来进行只读访问。也就是说,readers和writers文件包

含有CVS用户名,这些用户名可以与系统用户名一致或不一致。

这里有一个关于服务器在决定是否允许只读或只写访问行为的完整描述。

如果readers文件存在,并且这个用户名被列在内,那么她会获得只读访问权限。如果w

riters存在,并且用户没有被列入其中,那么她也只能获得只读访问权限(这是正确的

,即使readers存在但用户没有被加入其中)。否则,她将获取完全读写访问权限。

当然,如果两个文件同时记录了同一个用户,这样会发生冲突。这种情况可以通过较为

保守的方式解决。此用户会获得只读访问权限。这样做会更有利于保护存储仓。

 


     mutecat 加油!!
     我爱我的姐姐!
 健康乐观、积极向上的生活!
欢迎访问我的blog  http://blog.donews.com/mutecat

发信人: mutecat ((I love Linux)), 信区: Linux
标  题: [原创]pserver认证方式配置CVS服务器(2)
发信站: 武汉白云黄鹤站 (2006年07月05日08:38:12 星期三), 站内信件

    前面已经成功启动了cvspserver,要登陆cvs服务器我们肯定需要cvs的用户帐号,

cvspserver是通过cvs根目录下的CVSROOT/passwd文件来管理登陆用户的.从前面的

/etc/xinetd.d/cvspserver文件里可以看出我的cvs根目录位于/CVS节点处.

    使用命令cvs -d /CVS init初始化cvs服务,此命令还会自动生成/CVS目录并在其

子目录建立CVSROOT文件夹.

    默认情况下/CVS/CVSROOT目录下面是没有passwd文件的,passwd文件的格式如下:

    cvs用户名:密码:系统用户

    由此可以知道cvs用户是映射到本地的系统用户的,因此一个系统用户可以对应n个
不同的cvs用户.为了便于管理,一般情况下单独为所有cvs用户建立一个独立的系统用户.

密码和系统用户也可以不要(配置匿名用户登陆和系统用户登陆)

    #group add cvs  (建立cvs组)
    #useradd -g cvs -d /CVS  cvsroot (建立cvsroot用户,根目录位于/CVS节点处)
    #passwd cvsroot
    #chown -R cvsroot.cvs  /CVS

    接下来的问题是如何创建passwd文件?

 


     mutecat 加油!!
     我爱我的姐姐!
 健康乐观、积极向上的生活!
欢迎访问我的blog  http://blog.donews.com/mutecat

发信人: mutecat ((I love Linux)), 信区: Linux
标  题: [原创]pserver认证方式配置CVS服务器(1)
发信站: 武汉白云黄鹤站 (2006年07月05日08:24:47 星期三), 站内信件

2006.7.5 by mutecat@byhh

题记:

    很久以前以ssh认证方式配置过cvs服务器,windows客户端使用wincvs登陆,以ssh方
式登陆cvs服务器的最大的好处就是安全性高,但是ssh认证方式涉及到公钥和密钥的生
成和保管以及putty的设置,对于cvs的用户而言显得有些麻烦.因此昨天又以pserver的
方式重新配置了cvs服务器,今天把过程记录于此,与大家共勉,也方便自己以后参考^_^.

操作环境: OS/RedHat 9.  cvs  vsrsion/1.11.2

    对于cvs是干吗的?如何安装cvs?pserver是什么?  你读这篇文章之前应该知道这些.

    以pserver方式启动cvs服务器,首先要开放cvspserver这个服务,cvspserver是一个

标准服务,不出意外,在/etc/services文件里面应该能找到这两行.

    cvspserver  2401/tcp #CVS client/server operations
    cvspserver  2401/udp #CVS client/server operations

    不难看出cvspserver使用标准的端口号2401.

    到底如何启动cvspserver服务呢?

    一般采用的方式是从xinetd启动,对于从xinetd启动的服务在/etc/xinetd.d目录

下都会有一个配置文件(也许更准确的说应该是启动文件),对于cvspserver服务文件名

就该是cvspserver,文件的内容如下:
        #default:on
        #description:
        #            cvspserver for cvs server to authorize cvs users
        service cvspserver
        {
            disable = no
            flags = REUSE
            socket_type = stream
            wait = no
            user = root
            server = /usr/bin/cvs
            server_args = -f –allow-root=/CVS pserver
            log_on_success += USERID
            log_on_failure += USERID
        }

        注意: 对于每个参数的=号左右两边都要至少有一个空格,否则cvspserver不能

正常启动,这个问题让我郁闷了一段时间的^_^.这就是规则,你必须遵守!各个参数的含义

我就不多说了,网上多的是.

    配置好以后我们就可以启动cvspserver了

    $service xinetd restart

    检查一下cvspserver是否正常启动.

    $netstat -a|grep cvs
    tcp     0       0   *:cvspserver  *    * LISTEN

    如果有类似于上面的输出说明cvspserver已经正常启动了!

     mutecat 加油!!
     我爱我的姐姐!
 健康乐观、积极向上的生活!
欢迎访问我的blog  http://blog.donews.com/mutecat

发信人: wangchun (luckydog<->mutecat), 信区: DianLinux
标  题: FB2002置底功能实现手记(8)
发信站: 喻信星空 (2006年04月18日21:08:32 星期二), 站内信件

    最后需要考虑一些细节问题,譬如置底的文章不能被直接删除,也不能直接被修改

标题等. 还有就是统计置底的文章数的问题,需要修改函数get_num_records    和

get_records  以及subtitute_record, 我是copy  cheyo@JMU代码,然后作少量修改.

1.置底文章不能被随便删除.

-> 在del_post函数中:

  找到这几行代码
 if (!SR_BMDELFLAG) {
      sprintf(genbuf, "删除文章 [%-.55s]", fileinfo->title);
      if (askyn(genbuf, NA, YEA) == NA) {
         move(t_lines – 1, 0);
     prints("放弃删除文章…");
     clrtoeol();
     egetch();
     return PARTUPDATE;
      }
   之后,加入:

  // add by mutecat@byhh
  if(fileinfo->accessed[1] & FILE_TOP){
          prints("\n\033[1;33m置底文章,无法删除. 请先取消置底.\033[m");
          clrtoeol();
          egetch();
          return PARTUPDATE;
  }
  // end

2. 置底文章标题不可修改

  src/bbs.h 中

-> 在edit_title函数中增加:

  /*added  by  mutecat@byhh  */
  struct stat st;
  if(stat(direct,&st)==-1 || (st.st_size/sizeof(struct fileheader) < ent))
      return DONOTHING;
  /*  作用是:文章置低后,不能改标题,但可以更来原文章标题.*/

3. 修改统计置底文章函数(也统计被g的文章函数)

 在src/record.c中:

-> 函数get_num_records中:

   if (stat(filename, &st) == -1)

                return 0;

   之后加入:

   if( strlen(filename)>=strlen(TOPFILE_DIR) &&

               !strcmp(filename+strlen(filename)-strlen(TOPFILE_DIR),TO
PFILE_DIR) ) {

                return st.st_size/size;

   }                               // add by mutecat@byhh copyed from cheyu
   // 上面这一句,返回当前版面已设置置底的文章.

 

   再加入:

 

   //add by mutecat@byhh copyed from hace

   char *s,buf[64];

   int num=st.st_size;

   strcpy(buf,filename);

   s=strrchr(buf,’/')+1;

   strcpy(s,".TOPFILE");

   if(stat(buf,&st)==-1)

      return num/size;

  else

      return (num+st.st_size)/size;

  //end

  注销这一行:
  //return (st.st_size / size);

-> 函数get_records中(注意:这里是get_records不是get_record):

   return (n / size); 这一行之前,加入:

   //add by  mutecat@byhh  2006-4.17  cpoyed from  hace

if(n<number*size){

    char *s,buf[64];

    struct stat st;

    strcpy(buf,filename);

    s=strrchr(buf,’/')+1;

    strcpy(s,".TOPFILE");

    if((stat(buf,&st)!=-1) && st.st_size>0){

        fd=open(buf,O_RDONLY,0); //没有作错误检查

        while(read(fd,&rptr[n],size)){

            n+=size;

            if(n>=number*size)break;

        }

        close(fd);

    }

}

  //end

-> 函数substitute_record中:

 /* add by mutecat  copyed from hace  */

  struct stat st;

  if(stat(filename,&st)==-1)

      return -1;

  else{

      if(st.st_size/size <id)

                  return -1;

  }

//end


~
~
~
~
~
~
※ 修改:·wangchun 於 04月18日21:09:24 修改本文·[FROM: 222.20.73.221]
※ 来源:·喻信星空 bbs.eistar.net·[FROM: 222.20.73.221]

发信人: wangchun (luckydog<->mutecat), 信区: DianLinux
标  题: FB2002置底功能实现手记(7)
发信站: 喻信星空 (2006年04月18日20:44:03 星期二), 站内信件

   下面就是在readdoent主题列表函数里面添加置底文章的显示格式.直接拷贝的

hace的代码,并做少量修改,添加的模块如下(在noreply=0前增加):

   char path[64];
   struct stat st;
   char msg[17];
   setbdir(path,currboard);
  if( (stat(path,&st) == -1) ){
    printf("error\n");
  }
  if( (stat(path,&st )!= -1) && (st.st_size/sizeof(struct fileheader)) < num
){
    ent->accessed[1] |=  FILE_TOP;
    ent->accessed[0] |=  FILE_NOREPLY;
    if( (ent->accessed[0] & FILE_MARKED) && (ent->accessed[0] &
FILE_DIGEST) )
    strcpy(msg,"\033[精华]\033");
    else if(ent->accessed[0] & FILE_DIGEST)
    strcpy(msg,"\033[提示]\033");
    else if(ent->accessed[0] & FILE_MARKED)
    strcpy(msg,"\033[推荐]\033");
    else
    strcpy(msg,"\033[注意]\033");
    msg[17]=0;
    sprintf(buf, " %-6s  %-12.12s %s%6.6s %s◆ %-.45s ",msg,
     ent->owner, color, date, " ",TITLE);
}

     mutecat 加油!!
     喜欢是浅浅的爱,爱是深深的喜欢
 健康乐观、积极向上的生活!
欢迎访问我的blog  http://blog.donews.com/mutecat
~
※ 修改:·wangchun 於 04月18日20:44:33 修改本文·[FROM: 222.20.73.221]
※ 来源:·喻信星空 bbs.eistar.net·[FROM: 222.20.73.221]