2008年12月31日星期三

centos 5 yum install wine +Dreamweaver 8 安装笔记

centos 5 yum install wine +Dreamweaver 8 安装笔记
新建一个yum 源

vi /etc/yum.repos.d/dag.repo
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
enabled=0
gpgcheck=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

命令

yum --enablerepo=dag install wine

配置 wine

wget http://sidenet.ddo.jp/winetips/files/wine-config-sidenet-1.9.1.tgz
tar xvzf wine-config-sidenet-1.9.1.tgz
cd wine-config-sidenet
/blog/bibouroku/./setup

设置字体

ln -s ~/.fonts/ipagui-mona.ttf ~/c//windows/fonts/

Dreamweaver 8

用WindowsPC复制到以下文件夹

C://Program Files/Macromedia
/home/lam/c/Program Files/Macromedia

C://Program Files/Common Files
/home/lam/c/Program Files/Common Files

C://WINNT/system32/MACROMED
/home/lam/c/windows/system32/Macromed

C://Documents and Settings/All Users/Application Data/Macromedia
/home/lam/c/windows/profiles/All Users/Application Data/Macromedia

regedit
HKEY_LOCAL_MACHINE/Software/Macromedia/
macromedia.regLinux
yum install recode
recode ucs-2..ascii macromedia.reg
wine regedit macromedia.reg

Dreamweaver重启

wine "c:\Program Files\Macromedia\Dreamweaver 8\Dreamweaver.exe"

就可以使用了

http://fedoraproject.org/wiki/AndreasBierfert/Wine

2008年12月30日星期二

linux时间同步

hwclock --systohc
hwclock --hctosys

2008年12月27日星期六

目录下文件按数字顺序集体重命名(awk)

bbskuang@ubuntu:~$ ls | awk '{print "mv "$1, NR".txt"}' | sh
mv: `1.txt' and `1.txt' are the same file

bbskuang@ubuntu:~$ ls
1.txt 11.txt 13.txt 15.txt 17.txt 19.txt 3.txt 5.txt 7.txt 9.txt
10.txt 12.txt 14.txt 16.txt 18.txt 20.txt 4.txt 6.txt 8.txt

bbskuang@ubuntu:~$ ls -al



http://freebsd.chinaunix.net/bbs/thread-1340676-1-1.html

杀掉某终端用户的shell(含正则)

echo "系统当前用户"
echo "---------------"
who | awk '{print $2}'
echo "---------------"
echo "输入要杀死终端的终端号:"
read $TTY
kill -9 ${K}`ps -t $TTY | grep [0-9] | awk '{print $1}'`

2008年12月22日星期一

Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份

作者:李晨光

作为网管人员大概都无一例外的经历过系统备份,尤其是重要系统的备份、重要数据库系统的备份工作。由于备份是个频繁而琐碎的工作,如何能把这个工作做得即简单又灵活呢?下面就来介绍在Linux下如何使用SSH和Crontab以及Rsync工具来进行数据的自动备份与同步。
一、SSH无密码安全登录
为什么要选择SSH 呢?SSH又是什么呢?可以说它是替代以前Telnet的远程登录工具,SSH的英文全称是Secure Shell。用户可以把所有传输的数据进行加密,这样即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。而且SSH的数据传输是经过压缩的,可以加快传输的速度,这就是SSH 目前能替代Telnet远程登录工具的原因。
说到安全,SSH提供两种级别的安全验证,一种是基于口令的安全验证。只要用户知道自己账号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证用户正在连接的服务器就是用户想连接的服务器,可能会有别的服务器在冒充真正的服务器,这存在着潜在的威胁。一种是基于密匙的安全验证。需要依靠密匙, 也就是用户必须为自己创建一对公匙,密钥,并把公用密匙放在需要访问的服务器上。如果需要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求使用用户的密匙进行安全验证。服务器收到请求之后,先在服务器上用户的主目录下找到该用户的公用密匙,然后把它和用户发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”并把它发送给客户端软件。客户端软件收到“质询” 之后就可以用用户的私人密匙解密再把它发送给服务器。
下面做的就是利用第二种基于密匙的安全验证的登录,具体方法如下:
使用如下命令在需要备份的机器上创建一对公钥/密钥:
#ssh-keygen -t rsa
Generation public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):
Enter same passphrase again:
Your identiflcation has been save in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_ras.pub.
The key fingerprint is:
c3:a0:de:f8:24:8e:f6:0d:ed:0a:b0:a2:2d:aa:d3:8b root@localhost.localdomain
这期间一直按回车即可,这样公匙/密钥就创建完毕。
使用如下命令把公匙传到需要备份的服务器上:
#ssh 192.168.1.2
#mkdir .ssh;chmod 0700 .ssh
远程登录到需要备份的服务器上并且创建.ssh目录。
#scp .ssh/id-rsa.pub 192.168.1.2 : .ssh/authorized_keys2
上述命令可以把公钥远程传过去。
这样一个SSH基于密匙的安全验证登录就简单的做完了,现在就可以从192.168.1.1直接用“ssh 192.168.1.2”无密码自动登录过去了,这样就简单而又安全的实现了自动登录目的, 可以为下面定时做备份打下前题。
二、定时数据同步
这里把定时触发和同步一起来简单介绍一下,Crontab是个能定时执行命令的一个工具, 它是用来让使用者在固定时间或固定间隔执行程式之用,下面就介绍一下这个命令的常用参数。
Crontab命令参数:
-e执行文字编辑器来设定时程表,内定的文字编辑器是VI,如果你想用别的文字编辑器,则请先设定VISUAL环境变数来指定使用那个文字编辑器(比如说setenvVISUALjce)。
-r删除目前的时程表。
-I列出目前的时程表。
Crontab时程表示格式如下:f1 f2 f3 f4 f5 command
其中,f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。Command表示要执行的命令。当f1为 时表示每分钟都要执行command,f2为*时表示每小时都要执行程式,其余类推。当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从第a到第b小时都要执行。当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其余类推。当f1为a,b,C,......时表示第a,b,C,......分钟要执行,f2为a,b,C,...... 时表示第a,b,C,......个小时要执行,其余类推。当然也可以将要定时执行的命令存放在预备文档里,这里就得用crontab file的方式来设定时程表。
三、数据同步
现在来介绍一下如何让数据同步的一个工具,Rsync可以让数据同步,下面看一下一些Rsync的主要参数:
-V,--verbose 输出的信息;
-q,--quiet 安静模式,几乎没有信息产生.常用在以cron执行rsync;
-a,--archive archive mode权限保存模式,相当于-rlptgoD 参数;
-p,--perms 保留档案权限;
-O,--owner保留档案所有者(root only);
-g,--g rouP 保留档;案群;
-D,--devices 保留device 信息(root only);
-e,--h=COMMAND定义所使用的remote shell;
-4, --ipv4 使用IPv4协议;
-6, --ipv6 使用IPv6协议;
下面看一下如何通过SSH和Rsync工具组合使用方法:
#rsync -ave ssh 192.168.1.2:/home/ftp/pub/ /home/ftp/pub/
需要注意的是,源端目录名称末尾的/。在源说明中后缀/通知rsync复制该目录的内容,但不复制目录文件自身。要想把目录包含在要复制内容的最顶层就要去掉/;
使用SSH传输rsync流量具有下述优点, 可通过网络加密数据,而且速度非常快,使用SSH客户端密钥建立的任何信任关系。如果要在两台计算机之间保持大型、复杂目录结构的同步性(尤其是两者间的差异很小时), 那么rsync就是一种使用起来极为方便(并且执行速度很快)、随心所欲的工具。
#crontab -e
0 17 * * 1-5 rsync -ave ssh 192.168.1.2:/my /my
上面的操作"crontab-e"命令是编辑定时启动脚本,然后在周一到周五的每天下午5点执行SSH远程自动登录然后把192.168.1.2的/my目录下的所有东西同步到本地的/my目录下,这样就达到了自动数据同步备份的目的了。

2008年12月15日星期一

关于引入日期的shell用法

#! /bin/bash

. /home/orarun/.bash_profile


#得到今天星期几的数字
DATE_n=`date +%u`
echo `date` > /backup/exp_bak/daily_exp.log

cd /backup/exp_bak
rm msprod_$DATE_n.dmp.gz
#删除上周这一天的备份
#今天周五就删除/backup/exp_bak/msprod_5.dmp.gz

2008年12月13日星期六

mtop 实时监控 MySQL

Requires the following perl modules: Module Available At
------------ --------------------------------------------------------
Curses http://cpan.linuxforum.net/authors/id/G/GI/GIRAFFED
DBI Distributed as Bundle::DBI: http://www.cpan.org/authors/id/TIMB
DBD::mysql http://www.cpan.org/modules/by-module/DBD
Getopt::Long (Distributed with Perl 5)
Net::Domain Part of libnet: http://www.cpan.org/authors/id/GBARR
# perl -e 'use Curses'
# perl -e 'use DBI'
# perl -e 'use DBD::mysql'
# perl -e 'use Getopt::Long'
# perl -e 'use Net::Domain'没有输出就是模块已经安装了,有错误就是相应的模块没有安装。可以在上面给出的地址下载相应模块的最新版本。
安装所需的 Perl 模块:
# tar zxvf Curses-x.xx.tar.gz
# cd Curses*
# perl Makefile.PL
# make
# make installyum 仓库里有 perl-DBI ,所以直接 yum 安装,# yum -y install perl-DBI因为是编译安装的 MySQL ,所以需要把 lib 的路径加入 ld.so.conf ,# vi /etc/ld.so.conf
/usr/local/mysql/lib/mysql
# ldconfig虽然 yum 仓库里有 perl-DBD-MySQL ,但其依赖 mysql ,所以还是编译安装,# tar zxvf DBD-mysql-x.xxxx.tar.gz
# cd DBD-mysql*
# perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config
# make
# make install安装 mtop :# tar zxvf mtop-0.6.6.tar.gz
# cd mtop-0.6.6
# perl Makefile.PL
# make
# make install添加相应的 MySQL 数据库用户:
# mysql -uroot -pPASSWORD
mysql> GRANT RELOAD,PROCESS,SUPER ON *.* TO 'mtop'@'localhost' IDENTIFIED BY 'mtop';
mysql> FLUSH PRIVILEGES;
mysql> exit运行:因为自定义了 mysql.sock 的位置,所以需要做个链接 mtop 才能运行,
# ln -s /var/run/mysqld/mysql.sock /tmp/mysql.sock
# mtop --dbuser=mtop --password=mtop

2008年12月10日星期三

Linux Iptables 内核2.6.18添加time模块

  系统:CentOS 5.1 内核:2.6.18-53.1.19.el5
  iptables 版本 1.3.5(系统自带的)
  下载一个内核:linux-2.6.18 解压到/usr/src/linux
  #cd linux
  #make mrproper
  #make menuconfig
  什么也不做,退出.
  vi Makefile
  把EXTRAVERSION = 更改为EXTRAVERSION = -53.1.19.el5
  保持跟uname -a 的版本一致
  下载一个iptables1.3.5解压到/usr/src/iptables (下面会用到)
  (下载)patch-o-matic-ng-20080214.tar.bz2
  wget ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.0.tar.bz2
  #cd patch-o-matic-ng-20080214
  #./runme --download
  ...........
  应用time补丁到内核:
  选y ,至此,netfilter的补丁打完了,如果你需要别的模块可以根据需要加上.
  编译kernel的modules
  #cd /usr/src/linux
  #make menuconfig
  在Device Drivers->;Networking support->;Networking options->;Network packet filtering (replaces ipchains)
  ->;IP: Netfilter Configuration中把下面的两项M选中.
  ; TIME match support
  保存,退出.
  编译安装模块
  下面就是最重要的步骤了,因为我们的原则是节省时间,不重新编译内核,而只编译其中的模块,这点2.4的内核跟2.6的内核有所不同,2.4内核的模块是以*.o形式的,而2.6内核是以*.ko形式的,
  [root@jiecho]# make modules
  HOSTCC scripts/basic/fixdep
  HOSTCC scripts/basic/split-include
  HOSTCC scripts/basic/docproc
  HOSTCC scripts/conmakehash
  HOSTCC scripts/kallsyms
  CC scripts/empty.o
  HOSTCC scripts/mk_elfconfig
  MKELF scripts/elfconfig.h
  HOSTCC scripts/file2alias.o
  HOSTCC scripts/modpost.o
  HOSTCC scripts/sumversion.o
  HOSTLD scripts/modpost
  HOSTCC scripts/pnmtologo
  HOSTCC scripts/bin2c
  到这里就可以ctrl+c中止了,因为我们不是要编译所有的模块,这样太浪费时间,而仅仅是netfilter的模块,但是如果你直接执行make modules SUBDIRS=net/ipv4/netfilter就会出错,这就是2.4和2.6的区别,我们先生成了scripts目录下的一系列需要的文件后就可以make modules SUBDIRS=net/ipv4/netfilter,并用modpost等等把*.o文件生成为*.ko文件.
  #make modules SUBDIRS=net/ipv4/netfilter
  编译完成netfilter的模块后拷贝编译完成的模块
  #chmod +x /usr/src/linux/net/ipv4/netfilter/ipt_time.ko
  # cp /usr/src/linux/net/ipv4/netfilter/ipt_time.ko /lib/modules/2.6.18-53.1.19.el5/kernel/net/ipv4/netfilter/
  #depmod -a 或 insmod /usr/src/linux/net/ipv4/netfilter/ipt_time.ko
  #lsmod | grep ip
  此时,能看到以下东东
  ipt_time 6400 1
  但现在还不能用,还却少libipt_time.so 这个东东
  现编译下载的iptables
  #cd /usr/src/iptables
  #make KERNEL_DIR=/usr/src/linux
  # make install KERNEL_DIR=/usr/src/linux (我编译时出现不少警告,错误!)
  完了以后,
  #cp /usr/src/iptables/extensions/libipt_time.so /lib/iptables中
  到此结束, iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri

文章出处:http://www.diybl.com/course/6_system/linux/Linuxjs/200863/120846.html

Ettercap-交换环境下的嗅探器使用方法

一:安装
你可以在网上很多地方下载到它的最新版本,下载完后,先解压缩:
[root@CIEL root]#tar zxpvf ettercap-0.6.tar.gz
[root@CIEL root]#cd ettercap-0.6
[root@CIEL ettercap-0.6]#./configure&&make&&make install
[root@CIEL ettercap-0.6]#make plug-ins
[root@CIEL ettercap-0.6]#make plug-ins_install
安装完成后,输入"ettercap --help"就可以看见帮助文档.基本用法是
ettercap [option] [host:port] [host:port] [mac] [mac]



二:功能介绍
嗅探:它有5种工作模式
-a --arpsniff 基于arp的欺骗,分3小种:arpbased,smartcarp和publicarp
-s --sniff 属于IPBASED,目标可以是任何主机
-m --macsniff 属于MACBASED
需要说明的是-s -m两选项带来的是传统嗅探模式,分别基于IP地址和MAC地址.也就是说它们必需先把网卡置于混杂,然后才可以正常工作。所以在交换环境下,这两项会完全失效,-a选项是基于ARP欺骗的,是一种中间人攻击模型。实质是利用了ARP协议的漏洞,攻击者分别欺骗了A和B机。让A机把数据传给嗅探者,然后再由嗅探机器把数据转发给B机,A和B却没有意识到数据包的中转过程,这样我们就可以劫获数据甚至修改数据包



下面分别介绍五种用法:
1:ettercap -Nza ip1 ip2 mac1 mac2 (arpbased) 劫获IP1与IP2间的数据.缺省状态下
只接收TCP数据包
2: ettercap -Na ip mac (smartcarp) 劫获此ip与外部所有通讯数据,这种方式比较剧烈,启动时采用的是ARP风暴,很容易被发现.如果别人在用TCPDUMP监听,就会看见攻击者发出的无数的ARP请求,再傻的管理员都明白什么事情发生了.不过由于修改了指定主机的ARP表中关于被监听主机的MAC地址,还修改了被监听主机中的那些指定主机的MAC地址,处在完全的中间人工作状态,这时候你可以作的事情多些,比如更改数据包,截取SSH口令
3:ettercap -Nza ip mac (publicarp) 同上,不同点在于发送ARP请求的方式,上面采用的是ARP广播,这里只是对特定主机发送ARP请求.这样,不易引起管理员的怀疑.不过也带来了问题,被监听者自己也会收到这个以广播方式发送的ARP响应包,于是便会弹出"检测到IP地址于硬件地址冲突"之类的警告.不过不会影响目标主机正常通信,还有一点就是发往被监听主机的数据包会送给监听者,而监听者发出的数据包却被直接送往真正的目的主机,没有经过监听者的主机.所以我们只能截取不完全的通信内容
4:ettercap -Nzs IP:80 (ipbased sniffing) 基于IP地址的嗅探。这里仅劫获目标机器HTTP消息,你也可以指定其他端口,比如23 。如果没有指定,所有都会被截取
5:ettercap -zm mac1 mac 2 (macbased) 基于MAC的嗅探.只要输入MAC地址

需要说明的是,4,5两种方式只适合于共享网络,在交换网络下一概无效.MAC地址的获取很简单,直接在终端输入 “ettercap -l"就会列出所有在线主机。或者你先PING一下某个IP,不管有没有回应(没有回应可能是对方开了防火墙),再用ARP命令就可以获取其MAC地址。如果无法获取,则此IP不存在 ,这也是探测防火墙后的主机是否在线的一个好方法。



包过滤:由于网络流量实在很大,当你面对大量记录数据时,你可能会感到手足无措,你想找到自己需要的数据无疑是一项艰巨的工作,这时侯,我们可以通过—F选项加载自己的过滤规则,这样,很多无用的数据就会被忽略,删节。和注射字符一样,我们进行包过滤时有必要的话也要注意到正确的TCP序列号和确认序列号等因素。一旦你加载了自己的过滤链,你就可以有目的的得到自己最需要的数据了。一条过滤规则看起来就象汇编程序一样,当然,还是有差距的,用列阵形容可能更确切些。一条过滤规则大概如下:《协议,源端口,目标端口,承载数据》
一个空的搜索字符串总可以成立,比如端口如果没有指定,所有的都会被记录下来。只要那些规则匹配,你的过滤链就可以工作了
例如有如下数据流
packet 1: "var1=123&var2=400"
packet 2: "var1=124&var2=420"
packet 3: "var1=125&var2=460"
packet 4: "var1=126&var2=540"
packet 5: "var1=127&var2=700
......
......
我们可以写如下规则
Search: "var1=[3*]"
Replace: "var1=000" 网管bitscn_com
被过滤后的流就会如下
packet 1: "var1=000&var2=400"
packet 2: "var1=000&var2=420"
packet 3: "var1=000&var2=460"
packet 4: "var1=000&var2=540"
packet 5: "var1=000&var2=700"
如果“var1”后面没有被指定,默认则“var1=000” 网管u家u.bitsCN.com

最后是关于ssh的嗅探:
由于传输数据被加密,我们必需自己掌握密钥,具体实现方法如下:我们先截取服务器的明码密钥,保存在一边.自己再生成另一明码密钥,用来加密本机与客户机通讯数据,收到客户机数据后,自然可以解密,在用服务器明码密钥加密,发送给服务器,如此一来,可以偷天换柱.



三:工作参数:
下面列出它的主要选项,虽然它本身有28个,不过限于篇幅,下面只列出一些常用的:
-N --simple 非交互方式,很常用的
-z --silent 静模式(启动时不是发送ARP风暴)
-O --passive 被动模式嗅探
-b --broadping 广播PING ,替代了ARPPING
-S --spoof 用IP1这地址发送ARP请求获取其他机器信息
-H --hosts 嗅探的目标主机的IP,可以是很多台
-n --netmask 扫描由输入子网掩码确定的子网
-v --version 检查最新版本
-h --help 帮助文档

组合选项 (一般和N绑定一齐执行)
-u --udp 嗅探UDP数据,缺省是TCP
-p --plugin 运行指定名字的插件
-l --list 列出所有在线主机ip和mac.实质就是发送255个ARP请求,等待回音,如果你的子网掩码是255.255.0.0,就会发送255*255个请求,就是ARP风暴吧!
-C --colletc 仅搜集用户名和对应密码 Eg:ettetcap -NCzs IP:port 它规则不是很严格,所以你IP或PORT不填也没有关系
-c --check 检察网络里有没其他机器正在嗅探
-x --hexview 用16进制表达数据,这样,如果你想自己创建一个包的话会比较方便.比如建个文件写上"\x01\x02\x00\x00\xFF\xFF\x00x02here the pass".注意:ettercap不仅可以嗅探包,也可以创建包的.所以你可以更改穿过你机器的任何一段数据
-L --logtofile 记录所有数据到指定位置
-k --newcert 创建一个新的CERT文件,用以进行HTTPS攻击
-F --filter 从指定文件列加载过滤规则
-f --fingerprint 指定主机的OS判别,采用的是nmap的数据库,所以准确性得到保障,不过也有无法辨别的时候.
-t --linktype 判断自己处在什么样的网络环境中,交换或是HUB



实战篇
210.197.248.192是确定在线的主机,先判断它操作系统
[root@CIEL root]# ettercap -Nf 218.197.248.192
ettercap 0.6.0 (c) 2001 ALoR & NaGA
Your IP: 218.197.248.226 with MAC: 00:00:E8:7B:CA:4E on Iface: eth0
Fingerprinting 218.197.248.192...
Operating System:
Windows NT 5 Beta2 or Beta3
Windows Me or Windows 2000 RC1 through final release
MS Windows2000 Professional RC1/W2K Advance Server Beta3
Windows Millenium Edition v4.90.3000

现在小试牛刀,看看对方正在做什么
[root@CIEL root]# ettercap -Nza 218.197.248.192 218.197.248.254 MAC1 MAC2
这里218.197.248.254是网关。这样,我们就是中间人了,它与外网所有数据都会在我们这里流过。不过被嗅探机器的内网数据交换我们将看不到
下面是截取到的2段典型的HTTP交互数据,从第一段可以看出客户正在看的网页,脚本,浏览器语言以及客户的操作系统等信息。从第2段可以看出主机的bannner等等,都是网站的基本资料
GET /pcedu/script/title_edu.js HTTP/1.1.
Accept: */*.
Referer: http://wwwb.pconline.com.cn/pcedu/soft/doc/nt/10308.htm.
Accept-Language: zh-cn.
Accept-Encoding: gzip, deflate.
If-Modified-Since: Mon, 09 Sep 2002 09:18:53 GMT.
If-None-Match: "6f67c-2d5-3d7c677d".
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt).
Host: wwwb.pconline.com.cn.
Connection: Keep-Alive.

HTTP/1.1 200 OK.
Date: Sat, 01 Mar 2003 08:25:37 GMT.
Server: Apache/1.3.20 (Unix) PHP/4.1.2 mod_ssl/2.8.4 OpenSSL/0.9.6a.
X-Powered-By: PHP/4.1.2.
Keep-Alive: timeout=15, max=100.
Connection: Keep-Alive.
Transfer-Encoding: c

文章出处:http://www.diybl.com/course/6_system/linux/Linuxjs/200863/120834.html

2008年12月7日星期日

RHELAS4 下 rpmbuild 制作httpd-2.0.59 系列 rpm包

说明: RHELAS4 u2-u4 以Apache 2.0.X Released 产品线最新版本httpd-2.0.59.tar.gz+
apr-0.9.13+apr-util-0.9.13来制作最新版本的rpm软件安装包


第一步 编译环境
mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386
echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

第二下 下载httpd-2.0.59对应的apr的版本apr-0.9.13+apr-util-0.9.13
rpmbuild -ta --nodeps apr-0.9.13.tar.gz
rpm ivh /root/rpm/RPMS/i386/apr-0.9.13-1.i386.rpm (如果系统里有用 Uvh升级安装)
rpm ivh /root/rpm/RPMS/i386/apr-devel-0.9.13-1.i386.rpm
rpmbuild -ta --nodeps apr-util-0.9.13.tar.gz (系统里有apr-0.9.13才能编译此步) 
rpm ivh /root/rpm/RPMS/i386/apr-util-0.9.13-1.i386.rpm
rpm ivh /root/rpm/RPMS/i386/apr-util-devel-0.9.13-1.i386.rpm


第三步 http://httpd.apache.org 下载
注: Apache 2.2.X Released 为一个产品线
Apache 2.0.X Released httpd-2.0.59.tar.gz为此产品线的最新版本
Apache 1.3.X Released

第四步 提取 httpd.spces
tar -zxvf httpd-2.0.59.tar.gz
cp httpd.spec $HOME/rpm/SPECS下
cp httpd-2.0.59.tar.gz $HOME/rpm/SOURCES

vi $HOME/rpm/SPECS/httpd.spec

%prep
%setup -q
上面插入以下
%package suexec
Group: System Environment/Daemons
Summary: suexec binary for the Apache HTTP server
PreReq: httpd = %{version}-%{release}

%description suexec
This package includes the /usr/sbin/suexec binary which can be installed
to allow the Apache HTTP server to run CGI programs (and any programs
executed by SSI pages) as a user other than the 'apache' user.

在%changelog的上方插入以下
%files suexec
%defattr(-,root,root)
%attr(4510,root,%{suexec_caller}) %{_sbindir}/suexec
%{_mandir}/man8/suexec.8*

下面开始用rpmbuild制作最新httpd-2.0.X 最新rpm安装包
rpmbuild -ba --nodeps $HOME/rpm/SPECS/httpd.spec

到些你就会得到以下提示
Wrote: /root/rpm/SRPMS/httpd-2.0.59-1.src.rpm
Wrote: /root/rpm/RPMS/i386/httpd-2.0.59-1.i386.rpm
Wrote: /root/rpm/RPMS/i386/httpd-devel-2.0.59-1.i386.rpm
Wrote: /root/rpm/RPMS/i386/httpd-manual-2.0.59-1.i386.rpm
Wrote: /root/rpm/RPMS/i386/mod_ssl-2.0.59-1.i386.rpm
Wrote: /root/rpm/RPMS/i386/httpd-suexec-2.0.59-1.i386.rpm
Wrote: /root/rpm/RPMS/i386/httpd-debuginfo-2.0.59-1.i386.rpm

[root@mail bin]# rpm -qa|grep mod
mod_authz_ldap-0.26-2
mod_auth_kerb-5.0-1
mikmod-3.1.6-32.EL4
usermode-gtk-1.74-1
mod_auth_mysql-2.6.1-2.2
mod_python-3.1.3-5.1
mod_auth_pgsql-2.0.1-6
module-init-tools-3.1-0.pre5.3
usermode-1.74-1
mod_perl-1.99_16-4
mod_ssl-2.0.52-19.ent
[root@mail bin]#

用httpd-2.0.59.tar.gz 制作的rpm包 里有个
Wrote: /root/rpm/RPMS/i386/mod_ssl-2.0.59-1.i386.rpm


谢谢观看!!!!!!!!!!!!!

原作者:xhc

如何查找含特定字符串的文件

find . -type f -regex ".*\.c" -print -exec grep "138" {} \;
find . -type f -regex ".*\.c" -exec grep "138" {} \; -print
find . -name "*.c" -exec grep "138" {} \; -print

2008年12月6日星期六

自动备份mysql的shell

filename=`date +%Y%m%d`

mysql_bin_dir/mysqldump –opt dataname -u user -ppassword | gzip > /www/mysqlbackup/name$filename.gz

保存退出

说明:

(1)mysql_bin_dir:mysql的bin路径;

(2)dataname:数据库名;

(3)user:数据库用户名;

(4)password:用户密码;

(5)name:自定义备份文件前缀标识。

2008年12月3日星期三

linux的tcp参数优化

我有几台作cache的linux服务器。
负载比较大,netstat -n|grep TIME_WAIT|wc -l的结果保持在4500左右。
怎么优化?

答:
vi /etc/sysctl.conf
  编辑/etc/sysctl.conf文件,增加三行:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

  说明:
  net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

  再执行以下命令,让修改结果立即生效:
  /sbin/sysctl -p

2008年12月1日星期一

Linux下如何知道某个端口在运行什么程序

当我们用netstat -an的时候,我们有时候可以看到类似的输出:



udp 0 0 0.0.0.0:32768 0.0.0.0:*


但是查找/etc/services又没有这个端口的相关说明,怎么办呢?这个是不是黑客程序?有没有办法查看究竟什么程序监听在这个端口?


使用lsof -i :32768就可以看到:



COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
rpc.statd 603 root 4u IPv4 953 UDP *:32768
rpc.statd 603 root 6u IPv4 956 TCP *:32768 (LISTEN)


原来是rpc的程序。


使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。

本篇文章来源于 黑客基地