Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7656807
  • 博文数量: 1770
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16357
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1770)

文章存档

2024年(15)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2008-04-17 09:35:53

使用php作为命令行脚本(CLI),可以处理很多日常维护工作。
比如从apache的access.log中得到访问用户的ip地址,可以使用以下脚本:
eip.php
$fh=fopen($argv[1],’r');
if(!$fh){
var_dump($argv);
exit();
}
$ips=null;
while(!feof($fh)){
$l=fgets($fh);
$pos=strpos($l,’ ‘);
if($pos>0){
echo substr($l,0,$pos).”\n”;
// $ips[]=substr($l,0,$pos);
}
}
fclose($fh);?>
执行:
php eip.php access.log 或者 chmod +x eip.php ; ./eip.php access.log
可以看到所有访问的ip地址
然后:
./eip.php | uniq #得到不重复ip地址
./eip.php | uinq | wc -l # 得到不重复ip地址数目
awk ‘{print $1;}’ access.log.0 | uniq -c |sort -k1 -g -r|less #倒序打印访问ip地址
awk ‘{print $1;}’ bbs-access_log |uniq -c |sort -k1 -r>ip_count.bbs_access_log #得到每个ip地址的访问次数输出到文件
sed ‘/craw/!d’ ip*bbs*| awk ‘{ total +=$1}END {print total}’ #得到crawler的访问总次数
或者 awk ‘/craw/ {total+=$1}END {print total}’
awk ‘{total+=$1}END{print total}’ ip*bbs* #得到访问总次数
while($line=fgets($fh)){
//get ip
$pos=strpos($line,’ ‘);
if($pos<=0)
continue;
$ol=trim(substr($line,0,$pos));
//get access time
$pos=strpos($line,’[');
$epos=strpos($line,’]');
if($pos<=0 || $epos<=0)
continue;
// 09/Jul/2007:20:00:17
$date=trim(substr($line,$pos+1,$epos-1-$pos));
preg_match(]*) (.*)@”,$date,$ms);
list($a,$day,$mon,$yar,$hou,$min,$sec,$s)=$ms;
$ndate=”$yar-$mon-$day $hou:$min:$sec”;
echo $ol.” “.$ndate.”\n”;
}
阅读(1269) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~