Posts tagged with "linux"
Thursday, 23. November 2006, 12:37:57
linux
CGI stands for Common Gateway Interface:
CGI 是网站主机与外部程序沟通的界面标准,只要输出符合这个标准的程序都通称为CGI,最普遍使用来撰写CGI 的是Perl Script。
今天我想写一个搜索关键字的perl脚本,最后如下,
1 在/home/ftp下运行
shell>find /home/ftp > /home/server/http2/cgi-bin/ftp.list
就可以把/home/ftp下的文件和目录都列出重定向到文本文件ftp.list
2 配置perl mod如下
azhoulinux@mail:/tmp/mod_perl-2.0.2$ sed -n '1,5p' INSTALL
Simple install:
% perl Makefile.PL MP_APXS=/usr/local/apache2/bin/apxs
% make && make test
% make install
这个就是安装方法,配置方法如下:
azhoulinux@mail:/tmp/mod_perl-2.0.2$ sed -n '6,12p' INSTALL
Simple config:
LoadModule perl_module modules/mod_perl.so
#PerlModule Apache::compat
# your config comes here
之后重启apache就可以了。
我写了以下几个脚本(放在/cgi-bin目录下):
test.pl
mail:/home/server/httpd/cgi-bin# cat test.pl
#!/usr/bin/perl
##
## this is very simple ,you need to see test.sh
## to accept the input from other pages
$finfo = <STDIN>;
## set the charset ,and is needed if you like to use it as cgi
print "Content-type: text/plain; charset=gb2312 \n\n";
## to change it a little
$se_name=`echo $finfo|cut -c 5-`;
## put the output
print $se_name;
print `./test.sh '$se_name'`;
exit(0);
test.sh
mail:/home/server/httpd/cgi-bin# cat test.sh
#!/bin/bash
#print $1 ;
cat ftp.list|grep -i $1 |cut -c 2- - |awk -F / '{print NR " " $NF "\n" "ftp://211.68.42.243" $0 "\n"}' -
##----------------------------------
然后在页面上有一个form来传递变量,如下:
form method="POST" action="/cgi-bin/test.pl"
input size="40" maxlength="100" type="text" name="put"
input type="submit" value="SSA search"
/form
这样就把变量put传给了test.pl,由test.pl来处理这个变量.
这一次是头一次进行perl编脚本,还是这么有趣的脚本,呵呵
不过cgi有很多危险的地方,按照书上说的是:
cgi天生就是不安全的
比如上面脚本,如果有一个人恶意在input上填了“XX;rm -rf /;“
这样有可能XX作为一个变量传递,而“;“之后被shell看成新的命令行,如果执行者就比较大的权限,那就会删除很多东西。
Wednesday, 25. October 2006, 12:01:30
linux
1 准备安装oracle db 10g,在官方文档上查看了,一般软件包需求如下:
Required package versions (or later):
* binutils-2.15.92.0.2-10.EL4
* compat-db-4.1.25-9
* control-center-2.8.0-12
* gcc-3.4.3-9.EL4
* gcc-c++-3.4.3-9.EL4
* glibc-2.3.4-2
* glibc-common-2.3.4-2
* gnome-libs-1.4.1.2.90-44.1
* libstdc++-3.4.3-9.EL4
* libstdc++-devel-3.4.3-9.EL4
* make-3.80-5
* pdksh-5.2.14-30
* sysstat-5.0.5-1
* xscreensaver-4.18-5.rhel4.2
* libaio-0.3.96
* openmotif21-2.1.30-11.RHEL4.2 (Required only to install Oracle demos. Installation of Oracle demos is not covered by this guide.)
这里看到了许多X─window有关的软件包,请问是否需要x-window gnome?
2 我接触centos,发现软件包:
yum list |grep compat
java-1.4.2-gcj-compat.noarch 1.4.2.0-27jpp installed
compat-db.i386 4.1.25-9 base
compat-gcc-32.i386 3.2.3-47.3 base
compat-gcc-32-c++.i386 3.2.3-47.3 base
compat-glibc.i386 1:2.3.2-95.30 base
compat-glibc-headers.i386 1:2.3.2-95.30 base
compat-libcom_err.i386 1.0-5 base
compat-libgcc-296.i386 2.96-132.7.2 base
compat-libstdc++-296.i386 2.96-132.7.2 base
compat-libstdc++-33.i386 3.2.3-47.3 base
compat-openldap.i386 2.1.30-6.4E base
java-1.4.2-gcj-compat-devel.noarch 1.4.2.0-27jpp base
nss_db-compat.i386 2.2-29 base
这一些本来的gcc有什么区别?
是不是redhat专用的:
#yum info compat-gcc-32.i386
Setting up repositories
Reading repository metadata in from local files
Available Packages
Name : compat-gcc-32
Arch : i386
Version: 3.2.3
Release: 47.3
Size : 3.0 M
Repo : base
Summary: The GNU Compiler Collection for Red Hat Enterprise Linux 3 compatibility
Description:
This package includes a compatibility compiler with
Red Hat Enterprise Linux 3. This package includes the C compiler
and required compiler libraries for those systems.
如果你知道,简单回答就行了,关键是是否需要X环境 ? 是否要进入gnome图形界面才能安装Oracle ?
现在服务器没有安装x桌面,能不能基于字符安装Oracle ?
非常感谢!
Tuesday, 24. October 2006, 15:25:17
linux
centos
Tuesday, 3. October 2006, 01:52:43
linux
前几天debian莫名其妙的慢,重装了也没有,看了贴子,才知道真的遇到了bug了。
标题: 近日Debian更新贴士(fontconfig, fc-cache, 程序启动变慢)
如果用 root 权限执行 fc-cache 出现 failed to write cache 提示,原理是这样的:
新版本的 fontconfig 和 fontconfig-config 在 /etc/fonts/fonts.conf 里面
新增加了两行
<cachedir>/var/cache/fontconfig</cachedir>
<cachedir>~/.fontconfig</cachedir>
如果 upgrade 的时候没有用 apt 带的 fonts.conf ,可以手动加入这两行
来源:Debian bug report logs - #387928
另外,一个小提示:/etc/fonts/conf.d/70-no-bitmaps.conf 的存在会让文泉驿点阵
字体无法被 fc-cache 出来
Tuesday, 26. September 2006, 07:51:11
linux
在学习iptables时,我遇到一个问题,很多资料在解释NAT时,一般把SNAT,DNAT分开讲。
如果我们想把一个私有局域网络(ip网络地址192.168.x.x/24这样的地址),通过NAT实现都能上网(当然,有一个公网ip,也仅有一个公网ip,就是NAT服务器的ip地址),实现SNAT很容易做到:
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
或者:/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xx.xx.xx.xx
也就是局域网内往外发送数据包很容易,改变源ip成为公网ip就好了,
问题在于,外网发送给内网的数据包如何区分呢?并且内网可能有好几台机子,包括防火墙本身,如何知道数据包是发送给哪台机子的?
有这样一个解释:
SNAT改变包的源地址,这在极大程度上可以隐藏你的本地网络或者DMZ等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做SNAT和De-SNAT(就是反向的SNAT),以使LAN能连接到Internet。
SNAT只能用在nat表的POSTROUTING链里。只要连接的第一个符合条件的包被SNAT了,那么这个连接的其他所有的包都会自动地被SNAT,而且这个规则还会应用于这个连接所在流的所有数据包。
怎么理解?
这个连接流是否包括外网的数据包?如果是,怎么De-SNAT?
==========================================
nat 表
此表仅用于NAT,也就是转换包的源或目标地址。注意,就象我们前面说过的,只有流的第一个包会被这个链匹配,其后的包会自动被做相同的处理。实际的操作分为以下几类:
*
DNAT
*
SNAT
*
MASQUERADE
DNAT操作主要用在这样一种情况,你有一个合法的IP地址,要把对防火墙的访问重定向到其他的机子上(比如DMZ)。也就是说,我们改变的是目的地址,以使包能重路由到某台主机。
SNAT改变包的源地址,这在极大程度上可以隐藏你的本地网络或者DMZ等。一个很好的例子是我们知道防火墙的外部地址,但必须用这个地址替换本地网络地址。有了这个操作,防火墙就能自动地对包做SNAT和De-SNAT(就是反向的SNAT),以使LAN能连接到Internet。如果使用类似 192.168.0.0/24这样的地址,是不会从Internet得到任何回应的。因为IANA定义这些网络(还有其他的)为私有的,只能用于LAN内部。
MASQUERADE的作用和MASQUERADE完全一样,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP 地址,而不象SNAT用的IP地址是配置好的。当然,这也有好处,就是我们可以使用通过PPP、 PPPOE、SLIP等拨号得到的地址,这些地址可是由ISP的DHCP随机分配的。
Saturday, 23. September 2006, 14:40:04
linux
这两天使用debian配置了一台服务器,过程可谓艰难重重,对于我这种性子急的人,真是一个考验,我在安装配置过程中,也对linux及开源世界有一些认识,相对于以前,有了一些新感想。
其中一个,就是开源世界实在太“丰富”了,缺乏一个统一的标准,特别是linux世界,各个linux版本据称超过300个,版本之间软件包管理方式又有许多不同,你就是非常熟悉一个版本号,换了版本之后还得慢慢适应,我在安装配置中,就遇到太多类似的问题,都是由于软件包各种版本号不匹配,依赖关系没法解决。确实linux及开源世界还需要一种统一的意识,我想,windows能取得巨大成功的很大一个地方,就在于标准化,其中windows API就是非常典型的统一接口,统一视觉效果的体现,可以说,你会使用windows 98 就会使用windows 2003,但是对于linux世界,改变实在是太大了(当然这个和linux快速发展有很大关系),比如:我现在熟悉debian,但是我连gentoo怎么安装都不会,如果那一天管理gentoo主机,还得学很多东西。
我查看了关于linux的标准化,希望以后能做的好一些:
1.POSIX标准
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE和ISO/IEC组织开发的标准。该标准是基于现有的UNIX实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。
1991-1993年Linux刚起步时,适逢POSIX标准的制定正处在最后定稿的时候,POSIX标准为Linux提供了极为重要的信息,使得Linux能够与绝大多数UNIX系统兼容。最初的Linux内核代码(0.01版、0.11版)就已经为Linux与POSIX标准的兼容做好了准备。从Linux的发展进程也可以看出,Linux的成长一直有POSIX标准的辅佐,没有POSIX的指导,就不会有Linux的今天。
2.FSG(Free Standard Group)标准系列
Linux标准化规范和工作组——LSB(Linux Standard Base)工作组是Free Standards Group的成员工作组。LSB是Linux领域最重要和最有影响的标准化组织。LSB工作组以达成“standardizing the penguin”为目标,制定最基本的标准,如公众命令集和文件传输的格式等,为应用之间的兼容奠定基础。它致力于开发和推广一系列的标准,提高不同Linux发行版本的兼容性,使得软件应用得以运行在各种符合LSB标准的系统中,同时也帮助协调软件开发商向Linux移植和开发产品。目前国际上流行的Linux版本基本都遵循LSB标准,该规范是Linux世界统一的重要力量,可以说是Linux的工业标准。在LSB的发展历程中较为重要版本是v1.3和2004年推出的LSBv2.0。目前LSB的最新版本是2005年推出的LSBv3.0,不过LSBv3.0也不能完全解决当前Linux应用中所面临的兼容性问题。
OpenI18N(Open Internationalization Initiative)致力于增强国际化背景下的软件应用的可移植性和互操作性,提供一个通用的开放源码环境,使得全球不同文化、语言的应用程序可以正确地运行和正确地表达。OpenI18N也制定相关的标准并开发验证和测试工具包。符合OpenI18N标准的前提条件是符合对应的LSB标准。Linux国际化英文是从internationalization里,将i到n之间的18个字母略称为“i18n”,再加上Linux就变成li18nux,以此作为推展国际标准化的国际名称。
在FSG中除了LSB和OpenI18N外,还有许多有影响的标准组,如LANANA (Linux Assigned Names and Numbers Authority)、OpenPrinting、Accessibility、DWARF、Open Cluster。它们主要关注于特定的领域应用。
3.OSDL(Open Source Development Lab)标准系列
CGL(Carrier Grade Linux)是由OSDL资助的项目,致力于制订一个符合电信运营商要求的Linux标准。它针对网关, 信令服务器、管理服务器等电信应用提出了对Linux的增强,满足集成电信、数据和Internet的新一代通信基础设施的需要。CGL承诺遵守LSB标准,保持Linux版本的一致性,并遵守开放源码的许可协议和开放源码的开发流程。CGL支持相关软件包的测试和认证,是一个完整的体系。
DCL(Data Center Linux)也是OSDL资助的项目,致力于制订一个满足企业数据中心需要的Linux标准。它面向金融行业和制造业等运行关键性业务系统。其特征是积极采用新技术,使大型系统能运行关键性业务并承担高风险和重负荷。
DTL(Desktop Linux)是OSDL新近资助的项目,旨在推进Linux企业级的桌面应用。该项目目前处于筹划期,对外发布的信息较少。
4.United Linux(UL)
2002年6月,Caldera、 Conectiva、SuSE以及TurboLinux公司宣布成立United Linux组织,计划使Linux的开发与认证工作围绕一个全球统一的商用Linux版本进行。United Linux将满足企业用户对标准的商用Linux版本的需要,该版本能跨越软件及硬件平台,从而加速企业采用Linux。根据达成的协议,四家公司合作开发一个通用核心的Linux操作系统环境,称之为UL软件。四家合作公司在UL操作系统上捆绑自己的增值产品与服务,并以各自的品牌进行市场与销售。大量IT厂商都表示支持UL,包括AMD、Borland、CA、富士通-西门子、HP、IBM、Intel、NEC等。UL提供了一个真正基于标准的Linux操作环境,使供应商需要认证的Linux版本显著减少。随着Novell收购SuSE以及其他原因,United Linux组织已经瓦解,但对于如何防止Linux的分裂、如何简洁Linux生态链提供了有益的参考。
就个人而言,我深深感受到,学与做确实有很大不同,以前自己随随便便在自己主机上调试服务器,以为万事OK,其实真的做起来,还要非常警慎认真,做好“灾难”的预防措施,注意安全等问题。
不管如何,努力学吧!
Thursday, 14. September 2006, 12:47:15
linux, linux小组
写于9月23号:
这几天真是太忙了,最主要的问题就是给科协配置服务器,linux配置服务器是非常容易的,即使包括安装的过程,也就两个小时吧。这一回遇到的主要问题是硬件问题,我开始还非常“期待”科协的服务器,后来一看配置,比我的个人台式机还低级,有两台机子,其中一台居然是99年的(查看主板信息),还有一台是01年的,都可以是古董级的,硬件的发展水平实在是太快了,软件都跟不上了。
我一开始尝试在那一台最旧的机子上安装debian,安装过程可谓困难重重,都是一些莫名其妙的错误,现在我都记不起来了,很多时候真是考验人的耐性。最后,考虑到可能是硬件问题,我就把机子的硬盘取出来检验,确实存在问题。后来又在“库房”里找到五块硬盘,我当时心里非常高兴,以为有希望了。五块硬盘我是一块一块的尝试,不过非常失望,居然没有一块是好的,唯一的一块能转动的硬盘,在访问时就显示I/O err,也已经是硬件问题了。无奈,得解决硬件问题了……
9月21号,我和“威仔”去中关村买了一块新硬盘,80G,8M缓存,三年质保。下午就安装debian,我非常不小心的忽略了一个小信息,在主板bios没有取消quick book选项,所以在bios信息能看到硬盘,当时boot选项却没有ide,搞得我都快放弃了,把这地方改了,就没问题了,留给我的一个经验就是:在添加新设备时,一定要注意主机的检测过程。安装还算顺利,新硬盘就是好。接下去,配置apache,tomcat,vsftpd,忙得一塌糊涂,因为要争取星期一前把服务器做好。
现在服务器已经顺利运行了,不过还是有一些问题,好像并不稳定,有几回莫名奇妙的错误,我现在还在调试,看看是硬件(天哪,希望不是!)还是软件问题。如果接下去还有时间,我再考虑编译一下内核。
这是我真正意义上配置的一台服务器,时间实在是太急了,有一些粗枝大叶,以后再慢慢完善。
Tuesday, 12. September 2006, 05:08:15
linux
上个星期六可是多事的一天,给一个同学装linux(ubuntu,其实我心里想用debian,不过怕他不好入手),本来想挺简单的,却整整用了一个下午。
他想把windows和linux都装上,我们就先安装windows然后安装linux。前面没什么问题,就是全都安装后,在windows下使用了移动硬盘,就染上了病毒了,于是这个同学就使用了系统还原,这样做了之后,可能系统还原把mbr都改写了(因为是安装了windows后安装linux,grub把一个选择进入系统的小程序写在mbr),于是,grub罢工了,有时能进入有时候不能,我就使用ubuntu的live光盘,进入grub:
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub>
在命令下使用boot (hd0,X),然后是setup (hd0)
//X值根据具体情况。
这样试了,不过启动之后还是不行,甚至在linux下出现I/O err,我现在都不明白怎么会出现io错误。只能再使用windows高级修复,fixmbr。之后不甘心,还用grub修复,但是还是不行,有时能进grub有时不能。然后我估计是windows系统还原的问题(因为就是还原之后才出现错误),导致mbr有问题了。
最后没办法,让同学再次装windows,要“干净”的安装。再次安装grub,这一次什么问题也没有了。
总结:主要问题不在于linux,而是windows系统还原后修改了mbr,grub也受了影响(不过还是不能解释为什么有时能进有时不能进,也不能解释为什么重装grub也没用)
还有一个,现在有一些人,对linux一窍不通,也不想先有一个基础,就想看看linux是怎么样,这种态度,不是一种学习态度。
还有,windows下的病毒实在是太猖狂了,当然和在windows下的用户一直使用超级管理员权限的问题有关(这是一个非常关键的问题)。在*nix世界,如果作为一名系统管理员,没事就使用root权限,那是应该“枪毙”的。
1 2 3 Next »
Showing posts 1 -
8 of 17.