linux学习笔记




20100912

nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

snmpwalk -v 2c -c public 59.151.2.9 if

_______________________________________________________________________________________

20100913
grep -E "^User|^Group" /usr/local/apache/conf/httpd.conf

apache模块mod_wsgi安装
1../configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python
2.make
3.make install
4.vi /usr/local/apache/conf/httpd.conf 添加
LoadModule wsgi_module modules/mod_wsgi.so

To cleanup after installation, run:

make clean

If you need to build the module for a different version of Apache, you
should run:

make distclean

./configure --prefix=/usr/local/mysql --with-charset=gbk --with-extra-charsets=utf8;

discuz
admin
21vianet_pass
驾照后四位
1644


1、完全可以,但须用到Discuz的“首页调用插件”,如果您的论坛系统不含这个插件,则须先下载并安装它,插件可在DISCUZ官方论坛内找。
2、安装插件后,以管理员身份登录“系统管理”;
3、点击导航栏的“扩展”;
4、选择左侧分栏中的“论坛插件”;
5、找到“首页调用”并进行相关配置即可。

有啊

后台 倒数第二大栏有个 数据调用 就是这个选项

和 更新缓存 在一栏里

调出来就像这样的效果 \

_____________________________________________________________
20100915
mod_python

安装python时 加一下 --enable-shared测试一下
./configure --enable-shared

______________________________________________________________
20100916
mysql区分大小写,大小写敏感

是否区分大小写和校对规则有关,默认设的规则是大小写不敏感的。
show create table如果看到collate是ci结尾,那么就是不区别的,如果cs或bin结尾,就是区别的。
如果建表的时候选择的是区别大小写的规则而查询的时候又暂时不想区别,
可以用类似
WHERE column_name COLLATE latin1_general_ci = 'xxx'
的写法改变查询使用的校对规则


CREATE TABLE `testzone` (
`id` int(11) NOT NULL auto_increment,
`sid` int(11) NOT NULL,
`name` varchar(32) character set utf8 collate utf8_bin NOT NULL default '',
`nickName` varchar(32) default NULL,
`zoneType` int(11) default NULL,
`easefulness` int(11) default NULL,
`clean` int(11) default NULL,
`option` int(11) default NULL,
`level` int(11) default NULL,
`states` tinytext,
`propList` blob,
`pneuma` int(11) default NULL,
`storeLevel` int(11) default NULL,
`rooms` blob,
`storeProps` blob,
`storePet` blob,
`publicProp` blob,
`farmProp` blob,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=39698 DEFAULT CHARSET=utf8


_____________________________________________________________

如果运行时报库文件找不到,环境变量的问题。
[root@serverbak Python-2.4.4]# /usr/local/python244/bin/python2

.4
/usr/local/python244/bin/python2.4: error while loading shared libraries: libpython2.4.so.1.0: cannot open shared object file: No such file or directory


[root@serverbak Python-2.4.4]# export LD_LIBRARY_PATH=/usr/local/python244/lib
[root@serverbak Python-2.4.4]#
[root@serverbak Python-2.4.4]#
[root@serverbak Python-2.4.4]#
[root@serverbak Python-2.4.4]# python
Python 2.4.4 (#1, Sep 16 2010, 21:43:22)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>


20100918
_______________________________________________________________
安装MoinMoin Wiki后的简单配置
访问已运行的Wiki,http://localhost/mywiki
注册一个新的用户,比如admin。
wikiconfig.py的修改如下:
1. 设置默认的访问权限:
superuser = [u"admin", ]
这句设定刚建的admin用户为superuser
acl_rights_default = ‘All:’
acl_rights_before = u’admin:read,write,delete,revert,admin Known:read,write’
这里,我设置的权限是:默认没有任何权限,必须登录才能使用Wiki;admin用户具有管理员的权限;其他用户登录后可以读写Wiki。
(好像和Wiki的精神不符啊。 文档里有几种典型的权限配置供参考)
重启Apache,让配置生效。
2. 配置MoinMoin使用中文
用admin用户登录,按照Wiki的提示,访问SystemPagesSetup页,安装所需的简体中文包。
navi_bar = [
# If you want to show your page_front_page here:
u'%(page_front_page)s',u'RecentChanges',
u'FindPage',
u'HelpContents',
]
在导航里显示FrontPage链接
设置默认语言为中文
language_default = 'zh'
page_category_regex = u'^Category[A-Z]|类$'
page_dict_regex = u'[a-z]Dict$|字典$'
page_form_regex = u'[a-z]Form$|表$'
page_group_regex = u'[a-z]Group$|组$'
page_template_regex = u'[a-z]Template$|模板$'
保存wikiconfig.py后记得重启Apache。




select uid,name,sid,level,logoutTime,loginTime from player where name='?葬╭_情ゞ';



CREATE TABLE `player` (
`name` varchar(16) character set utf8 collate utf8_bin NOT NULL,
`uid` char(32) NOT NULL default 'null',
`sid` int(5) NOT NULL default '0',
`profession` int(10) default NULL,
`fund` int(5) default NULL,
`money` int(5) default NULL,
`score` int(10) unsigned zerofill NOT NULL default '0000000000',
`level` int(5) default NULL,
`experience` int(20) default NULL,
`life` int(10) default NULL,
`maxLife` int(10) default NULL,
`mana` int(10) default NULL,
`maxMana` int(10) default NULL,
`tradeMoney` int(11) default NULL,
`physicalAttack` int(4) default NULL,
`luck` int(11) default NULL,
`totalLuck` int(11) default NULL,
`magicAttack` int(4) default NULL,
`attackSpeed` int(4) default NULL,
`potentialExp` int(20) default NULL,
`ginger` int(8) default NULL,
`maxGinger` int(8) default NULL,
`sinew` int(8) default NULL,
`maxSinew` int(8) default NULL,
`phys

icalDefense` int(4) default NULL,
`magicDefense` int(4) default NULL,
`point` int(4) default NULL,
`potentialLevel` int(4) default NULL,
`hierarchy` int(4) default NULL,
`honor` int(10) default NULL,
`maxHonor` int(10) default NULL,
`title` varchar(32) default NULL,
`titleId` int(11) default NULL,
`almsdeed` int(11) default NULL,
`maxAlmsdeed` int(11) default NULL,
`contribution` int(11) default NULL,
`titlePoint` int(11) default NULL,
`honorTitle` int(4) default NULL,
`produceType` int(1) default NULL,
`produce` int(10) default NULL,
`bundleSize` int(2) default NULL,
`godownSize` int(2) default NULL,
`image` int(3) default NULL,
`style` varchar(32) default NULL,
`petUid` int(4) default NULL,
`org` varchar(32) default NULL,
`teacher` varchar(32) default NULL,
`marry` varchar(32) default NULL,
`sibships` varchar(32) default NULL,
`relation` blob,
`enemys` varchar(128) default NULL,
`states` text,
`resists` tinytext,
`attributes` tinytext,
`shortcuts` tinytext,
`bundle` blob,
`godown` blob,
`box` blob,
`myZone` blob,
`equipments` blob,
`honorEquipments` blob,
`skills` blob,
`pets` blob,
`tasks` blob,
`tasksMark` blob,
`techologys` blob,
`redundancy` int(11) default NULL,
`registTime` int(11) default NULL,
`loginTime` int(10) default NULL,
`logoutTime` int(11) default NULL,
`onlineTime` int(11) default NULL,
`address` tinytext,
`immure` int(11) default NULL,
`cause` tinytext,
`potentialPoint` int(4) default NULL,
`isHavePw2` tinyint(1) default NULL,
`biffProbit` int(4) default NULL,
`sceneZ` int(4) default NULL,
`sceneY` int(4) default NULL,
`sceneX` int(4) default NULL,
`sceneId` int(4) default NULL,
`services` blob,
`friends` blob,
`titles` blob,
`maxPetsNum` int(11) default NULL,
`maxRidePetsNum` int(4) default NULL,
`ridePets` blob,
`ridePetUid` int(4) default NULL,
`dailyStates` text,
`popularity` int(10) default '0',
`mmver` int(4) default '0',
KEY `index2` (`uid`),
KEY `index3` (`sid`),
KEY `uid` (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8



_________________________________________________________
20100919

855 ll -R sessions/ | grep -v ^d -c
856 ll -R sessions | grep -v ^d -c
857 ll -R sessions | grep -v ^d -c

309 /usr/sbin/lsof -p 2441 | wc -l
310 /usr/sbin/lsof -p 2441 | wc -l
311 /usr/sbin/lsof -p 2441 | wc -l

842 ll -R | grep -v ^d -c
843 ll -R | grep -v ^d -c
844 ll -R | grep -v ^d -c
845 ll -R | grep -v ^d -c
846 ps aux | grep java
847 ll
848 ll -r|more
849 ll -R |more
850 ll -R |grep -v ^d|grep -v total |grep -v ^.\/ |more
851 ll -R |grep xianjian|grep -v ^d|more
852 ll -R |grep xianjian|grep -v ^d|wc -l
853 ll -R |grep xianjian|grep -v ^d|wc -l
854 ll -R |grep xianjian|grep -v ^d|wc -l
855 cd ../log/
856 ls
857 tail -f dc.log

858 cd ../sessions/
859 ll -R |grep xianjian|grep -v ^d|wc -l

grep 花影竹沧 db.log.o



___________________________________________________________________________
20100920

检查可监控的服务
在被监控端的 nrpe.cfg 文件中,可以看到这样的配置:
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
这是用来检查 CPU 负载的。

如果需要自定参数则使用下面命令
command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
并开启dont_blame_nrpe =1
开启参数将会带来一定的安全风险

被监控机重启nrpe

ps aux|grep nrpe
kill $pid
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

监控机设置
在监控机commands.cfg 添加nrpe的定义

# 'check_nrpe ' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

增加hostA.cfg
在/usr/local/nagios/etc/objects/ 目录下新建文件:hostA.cfg
把A.cfg添加到nagios主机:
echo "cfg_file=/usr/local/nagios/etc/objects/hostA.cfg" >> /usr/local/nagios/etc/nagios.cfg
如果要再添加B机器方法炮制就可以了

hostA.cfg

define host{
use generic-server
host_name A
alias A
address A 的IP
}

define service{
use generic-service
host_name A
service_description load
check_command check_nrpe!check_load
#使用自定参数
#check_command check_nrpe!check_load!6.0,5.0,4.0!15.0,8.0,6.0
}

重启监控机nagios

service nagios reload

访问http://localhost/nagios就可以看到新增的机器了

如何修改nrpe端口
被监控机nrpe.cfg修改server_port为15666

server_port=15666

重启nrpe

监控机commands.cfg增加-p 15666

define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -p 15666 -c $ARG1$
}

重启nagios就可以了

Connection refused or timed out
检查nrpe 端口
检查nrpe.cfg中allowed_hosts是否包含监控机ip地址
检查/etc/hosts.allow文件中监控机ip地址nrpe:192.168.1.91
检查iptables

开放5666端口

iptables -L
iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
#注意顺序
iptables -L
service iptables save
service iptables restart



_________________________________________________________________________________________________
Got error -1 from storage engine Mysql innodb
今天上午对mysql的https://www.360docs.net/doc/0c217680.html,f中的innodb参数做了小许修改,开启了innodb_force_recovery=1,
A new raw disk partition was initialized,
导致我在数据库中无法对数据做修改.

解决办法:
shutdown mysqld
编辑https://www.360docs.net/doc/0c217680.html,f,注释掉innodb_force_reconvery参数.
一旦这个参

数开启会初始化一个新的磁盘分区,导致原库中数据无法修改....
Shut down
InnoDB: mysqld and edit https://www.360docs.net/doc/0c217680.html,f so that newraw is replaced
InnoDB: with raw, and innodb_force_... is removed.

问题解决..



_______________________________________________________________________________
mysqldump迁移编码不同的数据库

作者: jovde 出自: https://www.360docs.net/doc/0c217680.html,
第一步,导出旧库
mysqldump --default-character-set latin1 -uroot -pXXX db > /tmp/old.sql

mysqldump -uroot -pXXX db > /tmp/old.sql
第二步,转换编码
iconv -t utf-8 -f gb2312 -c /tmp/old.sql > /tmp/new_utf8.sql
第三步,导入新库
修改new.sql,增加一条sql语句: "SET NAMES utf8;",保存。
mysql -hlocalhost -uroot db


mysqldump -uroot -pblip --default-character-set=gbk ebroad >ebroad06-24.sql


20100928
________________________________________________________________________________
安装方法:
1、在后台添加插件——导入discuz_plugin_ques.txt内的信息
2、执行sql.txt内的SQL代码
3、去后台设置允许使用和发表问卷的用户组

卸载方法:
1、在后台删除插件
2、执行desql.txt内的SQL代码

21:34 2008-4-5

除Bug说明 By小小新:

修改了点击答卷里的用户名提示错误页面的问题

[root@localhost tmp]# more group.txt
组ID 组名称
1 管理员
2 超级版主
3 版主
4 禁止发言
5 禁止访问
6 禁止 IP
7 游客
8 等待验证会员
9 叫花子
10 剑童
11 执剑者
12 舞剑者
13 剑师
14 御剑者
15 名剑
16 剑宗
17 人剑合一
18 剑仙
19 剑圣


_____________________________________________________________________________


[hyz@authhost log]$ history
1 w
2 ps auxw
3 df -ha
4 ls
5 pwd
6 ls
7 ls authserver/
8 cd authserver/
9 cd /home/hyz/5050
10 cd /home
11 cd /home
12 cd 5050
13 cd hyz/
14 ll
15 ip add
16 ll
17 cd bin
18 ll
19 cd 5050/
20 ll
21 cd log/
22 ll
23 ll -h -t |head
24 tail -n 1000 abitcool_agi.log |more
25 ll
26 cd ..
27 ps aux |grep agi
28 ll
29 cd ..
30 ll
31 cd 5050
32 ll
33 ./agiserver
34 netstat -nalp |grep agi
35 ll
36 vi base.conf
37 ./agiserver
38 cd ..
39 cd 5060
40 ll
41 cat base.conf
42 cd logs
43 cd log/
44 ll
45 ll -h -t|more
46 tail -n 100 abitcool_agi.log
47 cd ..
48 cd ..
49 cd 5050
50 ll
51 ./agiserver
52 cat base.conf
53 cd ..
54 ll
55 netstat -nalp|grep 1521
56 cd 5060
57 cat base.conf
58 cat ../5050/base.conf
59 cd ../5050
60 ll
61 ./agiserver
62 last
63 history
64 pwd
65 cd ~
66 ll
67 ls -l

68 ls -a
69 cat .bash_history
70 exit
71 cd /home/hyz/bin/5050
72 ./agiserver
73 export
74 ll
75 cd log
76 ll
77 tail abitcool_agi.log
78 tail abitcool_agi.log -n 100
79 cd ..
80 ./agiserver
81 cd /
82 find libocci.so.10.1 /
83 find / |grep libocci.so
84 cd /home/hyz/bin/
85 ll
86 cd 5050
87 ll /home/hyz/authserver/oracle_occi_sdk/
88 cp /home/hyz/authserver/oracle_occi_sdk/libocci.so.10.1 .
89 ./agiserver
90 export
91 w
92 cd ..
93 cd ..
94 ll
95 cd authserver/
96 ll
97 cat run.sh
98 cat mkenv.sh
99 cat src.sh
100 more sqlnet.ora
101 more tnsnames.ora
102 ping 192.168.0.144
103 cd ..
104 ll
105 cat tnsnames.ora
106 cd ..
107 ll
108 cd hyz/
109 ll
110 cat a.pl
111 ll
112 cd my
113 ll
114 cat n.pl
115 cd ..
116 ll
117 cd bin/
118 ll
119 cat htpasswd
120 cat watchdog.sh
121 crontab -l
122 cd 5050
123 ll
124 ./agiserver
125 rm -rf libocci.so.10.1
126 w
127 pwd
128 cd log
129 ll
130 tail -f abitcool_agi.log
131 locale -u
132 locate -u
133 exit




20101009
_____________________________________________________________________________

scp 124.248.38.10:/usr/local/nagios.tar.gz ./
useradd nagios
tar -zxf nagios.tar.gz
chown -R nagios:nagios nagios
chmod -R 755 nagios
cd /usr/local/nagios/bin/
ldd nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
netstat -nalp | grep 5666


scp 124.248.38.10:/lib/libssl.so.4 /lib/libssl.so.4
scp 124.248.38.10:/lib/libcrypto.so.4 /lib/libcrypto.so.4
scp 124.248.38.10:/lib/libwrap.so.0 /lib/libwrap.so.0
scp 124.248.38.10:/lib/libcom_err.so.2 /lib/libcom_err.so.2
scp 124.248.38.10:/usr/lib/libgssapi_krb5.so.2 /usr/lib/libgssapi_krb5.so.2
scp 124.248.38.10:/usr/lib/libkrb5.so.3 /usr/lib/libkrb5.so.3
scp 124.248.38.10:/usr/lib/libk5crypto.so.3 /usr/lib/libk5crypto.so.3


124.248.38.17
124.248.38.36
124.248.38.6
211.151.67.146
211.151.67.134



______________________________________________________________________
cacti 流量
网址: https://www.360docs.net/doc/0c217680.html,
账号:shijihulian-M3
密码:51iker-shijihulian


20101012__________________________________________________________________________
鲜长安 18:08:22
style_8_common.css 这个文件。
化肥会挥发 18:09:03
这个有问题?
鲜长安 18:09:19

化肥会挥发 18:09:52
刚才我把那个问卷加到正式BBS,没有刷新缓存,也正常出来那个菜单了。
鲜长安 18:10:16
嗯。
鲜长安 18:10:52
这个CSS文件是根据后台这里的设置 以及 css_append.htm 文件 ,综合生成的。
鲜长安 18:11:29
这里的设置应该保存比如
鲜长安 18:11:36
应该是存在数据库中的。
鲜长安 18:12:09
刷新的时候,生成 style_

8_common.css 这样的CSS文件。
鲜长安 18:12:34
也就说改模板应该 在这里设置,然后刷新方式。
鲜长安 18:12:56
但以前做模板的人,是直接修改css文件。
鲜长安 18:13:04
所以只要一刷新,就出问题了。
18:13:21
成功接收文件

打开文件 打开所在文件夹

鲜长安 18:13:54
这个文件 是 刷新缓存后生成的CSS 和 以前自行修改的CSS的对比。
化肥会挥发 18:14:02
那以后别刷新了
鲜长安 18:14:07
改的地方还很多。
鲜长安 18:14:23
嗯。这个CSS文件变得很重要了。
化肥会挥发 18:14:37




_______________________________________________________________________
20101013

Cacti无法获取部分服务器的网卡流量问题已经解决


来源: ChinaUnix博客 日期: 2007.12.19 13:44 (共有0条评论) 我要评论

Cacti无法获取部分服务器的网卡流量问题已经解决,
解决方法如下,希望对大家有帮助!

1.
[root@codfei rra]# pwd
/usr/local/apache2/htdocs/cacti/rra
[root@codfei rra]# rrdtool fetch fxd-mdl11_traffic_in_365.rrd AVERAGE
按照以上命令执行如果结果输出为:
1197990600: nan nan
1197990900: nan nan
1197991200: nan nan
1197991500: nan nan
1197991800: nan nan
1197992100: nan nan

则表示snmp获取数据有问题,经过仔细检查发现不能获取流量的主机都是64位系统,
用以下命令检查:
[root@codfei rra]# snmpwalk -c public -v 2c 192.168.1.2 IF-MIB::ifHCInOctets
输出内容如下,表明不支持64位MIB库,终于找到原因了。
IF-MIB::ifHCInOctets = No Such Object available on this agent at this OID

2,需要重新安装snmpd支持64位MIB库,但是正常用源码包安装时在make的时候会出现error,无法继续,
解决方法:
在源码包下config后,先不要make,请先修改以下两个文件。

[root@codfei net-snmp-5.3.1]# vi apps/Makefile
TRAPDWITHAGENT = $(USETRAPLIBS) -ldl -lrpm -lrpmio -lpopt -lz -lcrypto -lm
替换成:
TRAPDWITHAGENT = $(USETRAPLIBS) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so -lz -lcrypto -lm

[root@codfei net-snmp-5.3.1]# vi agent/Makefile
LIBS = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio -lpopt -lz -lcrypto -lm $(PERLLDOPTS)
替换成:
LIBS = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so -lz -lcrypto -lm
然后在进行make && make install

3,停止当前linux自带的snmpd,通过daemoonls启动新安装的snmpd就可以了。
这时在用snmpwalk检测,支持64位MIB库了,过一会流量监视的图片也出来了!
[root@codfei rra]# snmpwalk -c public -v 2c 192.168.1.2 IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 2400309170
IF-MIB::ifHCInOctets.2 = Counter64: 256326257624
IF-MIB::ifHCInOctets.3 = Counter64: 0
IF-MIB::ifHCInOctets.4 = Counter64: 62480803742

9
IF-MIB::ifHCInOctets.5 = Counter64: 0

昨天升级cacti和spine到0.8.7e
今天发现cacti监控的服务器有几台不出图了,使用snmp手动查询能够取到值。


检查cacti.log:
07/08/2009 09:15:03 AM - SPINE: Poller[0] Host[7] DS[67] WARNING: SNMP timeout detected [500 ms], ignoring host '10.249.86.146'
07/08/2009 09:15:03 AM - SPINE: Poller[0] Host[7] DS[68] WARNING: SNMP timeout detected [500 ms], ignoring host '10.249.86.146'
07/08/2009 09:15:03 AM - SPINE: Poller[0] Host[10] DS[93] WARNING: SNMP timeout detected [500 ms], ignoring host '10.255.147.80'
07/08/2009 09:15:03 AM - SPINE: Poller[0] Host[10] DS[94] WARNING: SNMP timeout detected [500 ms], ignoring host '10.255.147.80'
07/08/2009 09:15:03 AM - SPINE: Poller[0] Host[10] DS[95] WARNING: SNMP timeout detected [500 ms], ignoring host '10.255.147.80'



cacti, SNMP timeout detected [500 ms],ignoring hos
解决办法:
CACTID: Host[...] DS[....] WARNING: SNMP timeout detected [500 ms], ignoring host '........'
For "reasonable" timeouts, this may be related to a snmpbulkwalk issue. To change this, see Settings, Poller and lower the value for The Maximum SNMP OID's Per SNMP Get Request. Start at a value of 10 and increase it again, if the poller starts working. Some agent's don't have the horsepower to deliver that many OID's at a time. Therefore, we can reduce the number for those older/underpowered devices.

增加了The Maximum SNMP OID's Per SNMP Get Request 的值,默认为10,我增加到了30(可以适当调大),其中的一台服务器正常了,但是,还有其他的服务器仍然不出图。

对于仍然不出图的服务器,在console-management-devices里选择不出图的服务器,修改里面的Maximum OID's Per Get Request选项,增加到30(在此之前这里还是默认的10.)



最后,我更改了setting里的Maximum Threads per Process 和 Maximum Concurrent Poller Processes为5,默认为1.


使用0.8.7c没有问题,升级倒出问题了~~

另:在spine0.8.7e的changelog里发现:
bug: If host has MAX OID's set to 0, timeouts occur



补充:这两天发现,被监控的服务器重启或停止后,cacti的监控就会报这个错误,手动修改一下出问题的服务器的监控选项里的The Maximum SNMP OID's Per SNMP Get Request ,后问题就消失了,不论是改大或是改小,似乎是spine 0.8.7e的BUG,但又不想换回低版本的spine,忍着吧,希望下个版本可以解决这个问题。



____________________________________________________________________________________________________________________________

马欣哲 1003银通(184690020) 14:53:49
怎么在日志里找最后访问的10000条记录里访问最高的10个IP呀
马欣哲 1003银通(184690020) 14:54:01
谢谢兄弟们
马欣哲 1003银通(184690020) 14:54:16
apache日志里
曹风振0807聚宝(413237954) 14:59:58
tail -n 10000 日志文件名|awk -F ‘{$n

}’|sort -n|uniq -c 这是第一步统计10000的ip和访问数量 2,然后再按数量排列取前十个ip
梁老师(40676745) 15:00:14
tail -n 10000 access.log | awk '{++A[$4]} END {for(i in A) printf("%10d\t%s\n", A[i], i) }' | sort -rn | head -n 10

其中$4是指access.log中第四段为访问客户端的IP。请根据实际情况来操作。


_____________________________________________________________________
中文码互转换 转码

export LC_ALL="zh_CN.GBK"
scp raptor@freebsdserver:/home/raptor/myfiles/*.* .
export LC_ALL="zh_CN.UTF-8"
convmv -f GBK -t UTF-8 --notest *.*


convmv -f GBK -t UTF-8 --notest *.*



____________________________________________________________________________________________
apache如何防止静态URL盗链
这是同事今天提出的一个问题,由于站点中的图片她们采用的是静态绝对路径,而不是SGL的搜索引擎路径,所以我想除了在PHP配置和apache上做文章应该是没有办法的。

我先是查看了phpinfo中的所有有关referer的配置选项,只发现了一个session.referer_check 配置选项。

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
意思是说在访问请求本站点页面时会检查Http Request header的Referer是否包含你所设置的字符串,如果没有则session被视为无效。看来是达不到目的。

想了一下,前阵子自己在SGL中试验的clean url,我想apache的mod_rewrite应该是可以实现这个功能。

打开httpd.conf搜索了一下referer,还真发现了不少地方在使用referer,如:

LogFormat “%h %l %u %t \"%r\” %>s %b \"%{Referer}i\” \"%{User-Agent}i\"” combined

虽然我不太确定是什么意思,不过大概应该是记录日志,而且还记录了这些流量是从什么地方转过来的。不过它至少说明了在这里面是可以使用Rerfer这个变量,那么结合mod_rewrite的功能应该是可以把对本站点的盗链转到某个特定页面。当然这里又要用到regular expression.(真是无处不在啊!)。

apache的配置文件中有个指令:SetEnvIfNoCase
Sets environment variables based on attributes of the request without respect to case

[More:]

作用是根据request header的属性来设置apache的环境变量,正规匹配时忽略大小写

解决方案:

修改httpd.conf,增加如下配置

SetEnvIfNoCase Referer “^https://www.360docs.net/doc/0c217680.html,” local_ref=1
Order Allow,Deny
Allow from env=local_ref


其中的domainname应该换为你的站点的域名。意思是说:如果Referer变量是以你的站点的域名开头,则设置环境变量 local_ref=1

这样当别的站点盗链时就会出现无法显示的提示。

下面是我在GOOGLE上找到的利用mod_rewrite重定向的写法,我查了一下apache的配置文档,做了一下解释(如

有错误请指正)。

这需要你的服务器安装mod_rewrite模块,是否安装可以通过phpinfo查看。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://www.360docs.net/doc/0c217680.html,/.*$ [NC]
RewriteRule \.(jpg|jpeg)$ https://www.360docs.net/doc/0c217680.html,/default.gif [R,L]

RewriteEngine
Enables or disables runtime rewriting engine
启用运行时重写引擎
RewriteCond
Defines a condition under which rewriting will take place
定义一个重写发生的条件
在这里的两行定义了两个条件:
1、如果HTTP_REFERER为空时(我想应该是在浏览器中直接输入图像的URL)
2、如果HTTP_REFERER不是以你的域名对应的URL开头(匹配时忽略大小写)
RewriteRule
Defines rules for the rewriting engine
为重写引擎定义重写规则
这里的规则是从右到左([R,L])匹配,如果URL是以.jpg,jpeg结尾,并满足以上的条件


_______________________________________________________________________________________________
添加用户
#!/bin/sh
a=1
while test $a -le 4
do
useradd abc$a
echo 123456 | passwd --stdin abc$a
a=`expr $a + 1`
done

___________________________________________________________________________________
20101021

1.修改nagios配置并重启
vi /usr/local/nagios/etc/nrpe.cfg
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /
改成
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /

netstat -anlp | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 25352/nrpe

kill -9 25352
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

2.安装net-snmp 并配置
安装如下四个包
[root@gameserver3 backup]# rpm -qa | grep net-snmp
net-snmp-libs-5.1.2-18.el4
net-snmp-utils-5.1.2-18.el4
net-snmp-libs-5.1.2-18.el4
net-snmp-5.1.2-18.el4

装好后
vi /etc/snmp/snmpd.conf
更改 com2sec notConfigUser default public 改为 com2sec notConfigUser 211.151.67.150 public
更改 access notConfigGroup "" any noauth exact systemview none none 改为 access notConfigGroup "" any noauth exact all none none
将 #view all included .1 80 前面的 # 注释去掉
保存退出 :wq
service snmpd restart



3.加到开机启动

vi /etc/rc.local
加入如下两行
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
service snmpd start


________________________________________________________________________________________________________
awk使用

字段变量
$0 一行字符串,其内容为目前awk所读入的数据行
$1 $0上第一个字段的数据
$2 $0上第二个字段的数据
......其余类推

NF(Number of Fields)为一整数,其值表示$0上所存在的字段数目
NR(Number of Records)为一整数,其值表awk已读入的数据行数目
FILENAM

Eawk 正在处理的数据文件文件名


awk工作流程
1.自动从指定的数据文件中读取一个数据行
2.自动更新相关的内建变量之值,如:NR NF FILENAMEawk $0 $1
3.依次执行程序中所有的Pattern {actions} 指令
4.当执行完程序中所有的Pattern [actions]时,若还有未读取的数据,刐
反复执行1-4

awk '{print $2,$3*$4}' emp.dat

选择符合指定条件的记录
Pattern{action}为awk中最主要的语法。若某Pattern之值为真则执行它后方的action
awk中常使用“关系表达式 relational expression 要当成pattern

ex:组装部门员工调薪5%(组装部门员工之ID以"A"开头)所有员工最后之薪资若仍
低于100 则以100计
编写awk程序打印新的员工薪资报表
vi adjust1.awk
$1 ~ /^A.*/{$3 *= 1.05} //$1 ~ /^A.*/是pattern $3*=1.05是action
$3<100 {$3 =100} //$3<100 是pattern $3=100是action
{printf("%s $8s %d\n",$1,$2,$3)} //省略了pattern
执行
awk -f adjust1.awk emp.dat

第五章:awk中数组

统计各科修课人数,并印出结果
vi course.awk
{for(i=2;i<=NF;i++) Number[$i]++}
END{for(course in Number) printf("%10s %d\n",course,Number[course])}


有一种特殊的循环语法可以访问关联数组的所有元素,它是for循环的一个版本
for(variable in array)
do something with array[variable]
array是一个数组名字,variable是一个变量,可以将它看做和变通for循环计数器一样递增的临时变量
这个变量在每次循环时被赋于一个特殊的下标(因为variable是一个随意的名字,你会经常看到使用item,当数组被写入时可以用任何变量名作下标)、
ex:
for (item in acro)
print item,acro[item]
这个例子中,打印语句打印当前的下标,随后用这个下标定位的acro数组的元素,
这个语法可以应用于使用数值型下标的数组,但是,访问数组中的条目的顺序是随机的。
重要的是awk中的所有数组下标都是字符串类型,即使使用数字作为下标


说几点自己对awk数组的基础认识
1、数组定义:a[1]="ab";a[12]=24;a["xyz"]=15;a["mn1"]="ab"
a是数组名,1、12、xyz、mn1是数组下标,awk对下标是以字符串形式来处理的,即使a[12],也是把12当字符串
2、打印指定数组元素,接上例: print a[1];print a["xyz"]
3、打印所有数组元素。 for (j in a) print a[j]
打印顺序是随机的

进阶点的:
1、数组定义时,下标中可以有变量、函数,比如a[substr($0,1,2)"xyz"]=1
a[var"xyz"]=1 #var是awk里的变量
a[$1"#"$2]=1
2、数组嵌套定义: a[1]="bb";b[a[1]]=1 后面的数组b定义相当于b["bb"]=1

暂时想到这么多,学awk数组掌握这些基础知识后多看几个版里数据处理的实例,就会学习到应用数组的技巧。
awk 用法:awk ' pattern {action} '

变量名 含义
ARGC 命令行变元个数
ARGV

命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔符

1、awk '/101/' file 显示文件file中包含101的匹配行。
awk '/101/,/105/' file
awk '$1 == 5' file
awk '$1 == "CT"' file 注意必须带双引号
awk '$1 * $2 >100 ' file
awk '$2 >5 && $2<=15' file
2、awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。
awk '/101/ {print $1,$2 + 10}' file 显示文件file的匹配行的第一、二个域加10。
awk '/101/ {print $1$2}' file
awk '/101/ {print $1 $2}' file 显示文件file的匹配行的第一、二个域,但显示时域中间没有分隔符。
3、df | awk '$4>1000000 ' 通过管道符获得输入,如:显示第4个域满足条件的行。
4、awk -F "|" '{print $1}' file 按照新的分隔符“|”进行操作。
awk 'BEGIN { FS="[: \t|]" }
{print $1,$2,$3}' file 通过设置输入分隔符(FS="[: \t|]")修改输入分隔符。

Sep="|"
awk -F $Sep '{print $1}' file 按照环境变量Sep的值做为分隔符。
awk -F '[ :\t|]' '{print $1}' file 按照正则表达式的值做为分隔符,这里代表空格、:、TAB、|同时做为分隔符。
awk -F '[][]' '{print $1}' file 按照正则表达式的值做为分隔符,这里代表[、]
5、awk -f awkfile file 通过文件awkfile的内容依次进行控制。
cat awkfile
/101/{print "\047 Hello! \047"} --遇到匹配行以后打印 ' Hello! '.\047代表单引号。
{print $1,$2} --因为没有模式控制,打印每一行的前两个域。
6、awk '$1 ~ /101/ {print $1}' file 显示文件中第一个域匹配101的行(记录)。
7、awk 'BEGIN { OFS="%"}
{print $1,$2}' file 通过设置输出分隔符(OFS="%")修改输出格式。
8、awk 'BEGIN { max=100 ;print "max=" max} BEGIN 表示在处理任意行之前进行的操作。
{max=($1 >max ?$1:max); print $1,"Now max is "max}' file 取得文件第一个域的最大值。
(表达式1?表达式2:表达式3 相当于:
if (表达式1)
表达式2
else
表达式3
awk '{print ($1>4 ? "high "$1: "low "$1)}' file
9、awk '$1 * $2 >100 {print $1}' file 显示文件中第一个域匹配101的行(记录)。
10、awk '{$1 == 'Chi' {$3 = 'China'; print}' file 找到匹配行后先将第3个域替换后再显示该行(记录)。
awk '{$7 %= 3; print $7}' file 将第7域被3除,并将余数赋给第7域再打印。
11、awk '/tom/ {wage=$2+$3; printf wage}' file 找到匹配行后为变量wage赋值并打印该变量。
12、awk '/tom/ {count

++;}
END {print "tom was found "count" times"}' file END表示在所有输入行处理完后进行处理。
13、awk 'gsub(/\$/,"");gsub(/,/,""); cost+=$4;
END {print "The total is $" cost>"filename"}' file gsub函数用空串替换$和,再将结果输出到filename中。
1 2 3 $1,200.00
1 2 3 $2,300.00
1 2 3 $4,000.00

awk '{gsub(/\$/,"");gsub(/,/,"");
if ($4>1000&&$4<2000) c1+=$4;
else if ($4>2000&&$4<3000) c2+=$4;
else if ($4>3000&&$4<4000) c3+=$4;
else c4+=$4; }
END {printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file
通过if和else if完成条件语句

awk '{gsub(/\$/,"");gsub(/,/,"");
if ($4>3000&&$4<4000) exit;
else c4+=$4; }
END {printf "c1=[%d];c2=[%d];c3=[%d];c4=[%d]\n",c1,c2,c3,c4}"' file
通过exit在某条件时退出,但是仍执行END操作。
awk '{gsub(/\$/,"");gsub(/,/,"");
if ($4>3000) next;
else c4+=$4; }
END {printf "c4=[%d]\n",c4}"' file
通过next在某条件时跳过该行,对下一行执行操作。


14、awk '{ print FILENAME,$0 }' file1 file2 file3>fileall 把file1、file2、file3的文件内容全部写到fileall中,格式为
打印文件并前置文件名。
15、awk ' $1!=previous { close(previous); previous=$1 }
{print substr($0,index($0," ") +1)>$1}' fileall 把合并后的文件重新分拆为3个文件。并与原文件一致。
16、awk 'BEGIN {"date"|getline d; print d}' 通过管道把date的执行结果送给getline,并赋给变量d,然后打印。
17、awk 'BEGIN {system("echo \"Input your name:\\c\""); getline d;print "\nYour name is",d,"\b!\n"}'
通过getline命令交互输入name,并显示出来。
awk 'BEGIN {FS=":"; while(getline< "/etc/passwd" >0) { if($1~"050[0-9]_") print $1}}'
打印/etc/passwd文件中用户名包含050x_的用户名。

18、awk '{ i=1;while(iawk '{ for(i=1;itype file|awk -F "/" '
{ for(i=1;i{ if(i==NF-1) { printf "%s",$i }
else { printf "%s/",$i } }}' 显示一个文件的全路径。
用for和if显示日期
awk 'BEGIN {
for(j=1;j<=12;j++)
{ flag=0;
printf "\n%d月份\n",j;
for(i=1;i<=31;i++)
{
if (j==2&&i>28) flag=1;
if ((j==4||j==6||j==9||j==11)&&i>30) flag=1;
if (flag==0) {printf "%02d%02d ",j,i}
}
}
}'
19、在awk中调用系统变量必须用单引号,如果是双引号,则表示字符串
Flag=abcd
awk '{print '$Flag'}' 结果为abcd
awk '{print "$Flag"}' 结果为$Flag

___________________________________________________________________________________________

linux 5.5安装设置


vi /etc/sysctl.conf
添加如下几行

net.ipv4.tcp_syncookies = 1
n

et.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
# increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# increase Linux autotuning TCP buffer limits
# min, default, and max number of bytes to use
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

执行以下命令使内核配置立马生效:
/sbin/sysctl -p



只开启必须的服务
crond
network
sshd
syslog

ssh历史记录显示时间
vi /etc/bashrc
最下面加入如下四行:
HISTFILESIZE=2000
HISTSIZE=2000
HISTTIMEFORMAT="%Y%m%d-%H%M%S: "
export HISTTIMEFORMAT

修改ssh优先级
vi /etc/init.d/sshd
修改里面的
$SSHD $OPTIONS && success || failure

nice -n -2 $SSHD $OPTIONS && success || failure
然后重启sshd,并查看是否生效
service sshd restart
[root@localhost ~]# ps -aeo cmd,pid,nice | grep sshd
sshd: root@pts/0 20116 0
/usr/sbin/sshd 20205 -2
grep sshd 20212 0


修改文件个数
vi /etc/security/limits.conf
加入如下两行
* soft nofile 60000
* hard nofile 60000


_________________________________________________________________
grep "client denied by server" https://www.360docs.net/doc/0c217680.html,-error20100715 |sed 's/.*\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/\1/'| sort | uniq -c |sort -n -r


_________________________________________________________________________________________________________________
20101026

Rewrite(脉冲技术)
Rewrite是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术。它还可以实现限制特定IP访问网站的功能。
很多情况下,某个 IP 的访问很容易造成 CPU 100% (比如 某些搜索引擎的固定抓取,别人大量的采集站点),这个时候我们就要利用一些有效的手段封掉对方的IP
让他无法消耗服务器的资源,封IP的方法有很多种,如果你的 Web 服务器安装了 Rewrite 模块的话,也可以试试利用 Rewrite 规则封掉对方的 IP。
例如我们把某个特定的 IP 直接重定向到 baidu 首页,在网站根目录的 .htaccess 文件里添加代码:
 Code:RewriteCond % 123.123.123.123 [NC]RewriteRule ^(.*)$ https://www.360docs.net/doc/0c217680.html,/$1 [R=301]
将 123.123.123.123 这个 IP 替换成您要限制的 IP 即可
如果要实现多个 IP ,可以这样写:
Code: RewriteCond % 123.123.123.123 [OR]RewriteCond % 124.124.124.124 [NC]RewriteRule ^(.*)$ https://www.360docs.net/doc/0c217680.html,/$1 [R=301]
一、如何使用Rewrite 功能? 我们通过在IIS中安装一个名为 ISAPI_Rewrite 的ISAPI筛选器来实现 Rewrite 功能,您需要做的事情只有一个,就是修改配置文件 httpd.ini ,
有关该组件的详细使用方法,您可以登录该组件官方网站 https://www.360docs.net/doc/0c217680.html,/

来学习,这里我们举一个简单的例子来说明它的用法。
假设您要实现这样的 Rewrite 功能:您希望当用户访问 /about.htm 的时候实际访问的是 /index.html (您的空间里可以并不需要存在 about.htm)。
那么,设置方法是:
1、创建一个文本文件,内容为 [ISAPI_Rewrite] RewriteRule /about\.htm /index.html 这里,RewriteRule 这一行即为规则行,
这一行由三部分组成,三部分由空格隔开,第一部分即 RewriteRule 这几个字,
第二部分为用户访问的地址(使用正则表达式),
第三部分为实际存在于服务器上的文件路径。
2、将上述文件保存,命名为 httpd.ini 。
3、将这个文件上传到您的网站根目录中,对于我们的虚拟主机,即上传至 /web 文件夹中。
这时,当您访问 about.htm 的时候,看到的就是 index.html 的内容。
Rewrite 是一个功能强大的平台,要真正的使用它,您可能要花费相当长的时间来学习。如果您使用像 Discuz! 论坛等支持伪静态的系统,而仅仅是需要使用伪静态功能,
那么您可以不必学习,直接复制论坛开发者提供的配置文件即可,但要注意配置文件必须命名为 httpd.ini ,并且这个文件必须放在网站的根下。
httpd.ini 修改或者上传后一般会立即生效,如果长时间不能生效,请登录主机控制面板将网站停止然后再启动。

二、怎样借助 Rewrite 功能为特定的域名显示特定文件夹中的内容?
这实际上是 Rewrite 功能的巧用,因为我们既然可以将 /about.htm 重写为 /index.html ,我们也就可以把 /about.htm 重写为 /about/ 。
下面我们讲具体的实现方法。
我们假设您有两个域名 https://www.360docs.net/doc/0c217680.html, 和 https://www.360docs.net/doc/0c217680.html, ,我们实现让访问 https://www.360docs.net/doc/0c217680.html, 时看到的是网站根下的内容,而访问 https://www.360docs.net/doc/0c217680.html, 时看到的是 /name2/ 文件夹中的内容。
那么设置步骤如下:
1、将您的网站捆绑域名 https://www.360docs.net/doc/0c217680.html, 和 https://www.360docs.net/doc/0c217680.html, ,这个非常重要,两个域名都要捆绑。这时候如果不做设置,两个域名访问的都是网站根下。
2、修改上述问题一中的 httpd.ini 文件,在尾部增加以下内容:
RewriteCond Host: www\.name2\.com # 表示下一行规则只对 https://www.360docs.net/doc/0c217680.html, 生效(正则表达式中 \. 表示 . 本身)。
RewriteRule ^(.*)$ /name2/$1 [I] # 表示将所有网页 Rewrite 到 name2 文件夹中,[I]表示忽略大小写。
请确认上述内容位于 [ISAPI_Rewrite] 行之下,如果原本网站不存在 httpd.ini 文件,请将上述内容前面加上 [ISAPI_Rewrite] 。
3、将修改后的 httpd.ini 上传到网站根下覆盖原文件。
通过这个方法,您可以将捆绑在网站上的任何一个域名采用任何特定的 Rewirte

退则,实现类似捆绑子目录的功能当然也是不在话下。
这样,您的空间能捆绑多少个域名,您就可以建立多少个内容不同的网站了。




统计通过apache、nginx、squid、lighttpd等access log访问哪些请求 收藏
真不知道起啥标题好了。。。

总之我们经常有这样的需求,除了用top看机器负载意外,就是随时想知道用户都在访问我们哪些页面,最好是能统计出来哪些页面被访问的次数最多。要实时的!

比如apache、nginx、squid等等的access_log。

当然,我们可以用tail -f log|awk...+sort|uniq -c|sort -rn写一大堆命令来实现需求!太累了。

不过,有个好消息,有个很不错的工具,直接就能提供这样的功能,我们不用再重新发明轮子啦!

是的,apachetop!

apachetop,可以查看最近一段时间和自命令执行以来的类似apache日志(apache/nginx/squid etc.)访问情况,信息包括被访问的文件、次数、流量大小等等。

我们按下面的步骤安装:

#cd /usr/local/src
#wget https://www.360docs.net/doc/0c217680.html,/distfiles/apachetop-0.12.6.tar.gz

#tar xzvf apachetop-0.12.6.tar.gz
#cd apachetop-0.12.6

#--with-logfile指定类似apache日志存放的位置
#./configure --with-logfile=/usr/local/nginx/logs/access.log
#make && make install

运行

#apachetop

看看是不是你想要的?还有更多参数,按h看下

-f:这个参数指定了apachetop命令观察的对象。并不是每个人的apache的日志都在默认的位置,甚至你为了统计的方便,使用多个日志文件来区分不同的端口(80、443)、正确和错误的访问日志、等等。这个时候可以使用这个参数来指定log文件。尤其有用的是,你可能需要同时查看多个log的情况,这时你可以多次使用-f参数来制定,如: apachetop -f file1 -f file2。

-d:默认情况下,显示界面每5秒刷新一次,如果你觉得刷新频率不爽,你可以使用这个参数来做改变。

-T:上面的例子中,我们在最后面看到的是最近30秒的情况。如果你觉得密度不够,可以使用这个参数来做改变。

-H:还是上面的例子,可以看到最近30秒的请求总数是:1606+85+1+0=1692次。如果你想让每请求N次刷新一次界面怎么办?哈,就是使用这个命令了!

注意:-T和-H参数是不能同时使用的,否则会提示你:“-T and -H are mutually exclusive. Specify only one.”

-q:有一些程序,在使用的时候是可以带参数的,即get方式。如果你想看看都是些什么参数,就

本文来自CSDN博客,转载请标明出处:https://www.360docs.net/doc/0c217680.html,/baidongli/archive/2009/10/28/4739524.aspx

相关文档
最新文档