代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Perl
】
扫描apache日志
作者:
dezai
/ 发布于
2014/9/12
/
820
#! /usr/bin/perl -w use DBI; use Benchmark; $apache_log_file_path="/usr/local/apache/logs/access_log"; my $WARN_SCAN_TIME="/usr/local/apache/logs/warn_scan_time"; $date_pattern="\\d+\\/\\w+\\/\\d+\:\\d+\:\\d+\:\\d+"; if(open(WARN_TIME,$WARN_SCAN_TIME)){ print "open warn_sacn_time file success\n"; }else{ die "can't open warn_sacn_time file"; } $warn_line=<WARN_TIME>; $warn_line=~ qr/$date_pattern/; my $time_string=$&; if(open(APACHE_LOG_FILE,$apache_log_file_path)){ print "open apache log sucess"; }else{ die "can't open apache_log_file $!\n"; } $date_time; $time_flag=1; my $startime = new Benchmark; my $type; $pattern="([\\w+||_]+=\\w+)([&]?[\\w+||_]+=[\\w||\\[||\\]||\\%||\\\\||_||\"||\:||=||-]+)*"; my $dbh = DBI->connect("DBI:mysql:database=botest:host=192.168.65.128","root","",{"RaiseError" => 1}); my $sqr; my $sqr_query; LINE: while($line=<APACHE_LOG_FILE>){ if($line=~ qr/$date_pattern/){ $date_time=$&; } if($time_flag==1){ if($date_time eq $time_string){ $time_flag=0; next LINE if $time_flag==0; } } if($time_flag==0){ if($line=~ qr/type=([0||1||2||3])/) { $type=$1; } next LINE if $type!=1; $taskId; if($line=~ qr/task_id=([0-9]+)/){ $taskId=$1; } $sqr_query=$dbh->prepare("select * from warn_set where task_id=?"); $sqr_query->execute($taskId); ($id,$warn_method,$interval_time,$warn_total_times,$task_id) = $sqr_query->fetchrow_array; $sqr_query->finish(); if($line=~ qr/$pattern/){ $temp_line=$&; $temp_line =~ s/%20/ /g; my @array=(split('&',$temp_line)); my $temp; my @sql_field_value_array; my $sql_field="(warn_method,last_warn_time,interval_time,warn_total_times,warn_times,"; my $sql_value="('$warn_method.',CURRENT_TIMESTAMP,'$interval_time','$warn_total_times','0',"; my $flage=1; my $sql="insert into "; foreach $temp (@array){ @sql_field_value_array=(split('=',$temp)); if($flage==0){ $sql_field.=",".$sql_field_value_array[0]; $sql_value.=","."'$sql_field_value_array[1]'"; }else{ $sql_field.=$sql_field_value_array[0]; $sql_value.="'".$sql_field_value_array[1]."'"; $flage=0; } } $sql_field.=",status)"; $sql_value.=",'1')"; $sql.="warn $sql_field values $sql_value"; $sqr=$dbh->prepare($sql); $sqr->execute(); } } } open(OUTFILE, ">$WARN_SCAN_TIME") || die("Cannot open files\n"); print OUTFILE ($date_time); printf "** %s\n\n", timestr(timediff(new Benchmark, $startime)); $dbh->disconnect();
试试其它关键字
apache日志
同语言下
.
获取本机所有IP和设备的绑定情况
.
生成隨機密碼
.
取文件的最后修改时间
.
获取本机所有IP和设备的绑定情况
.
将perl脚本变成乱糟糟的一团
.
从 HTML网页中解析出链接
.
使用 HTTP::Request 请求 URL 并将响应保存到文件
.
使用指定的User-Agent抓取网页
.
使用 Net::SMTP发送邮件
.
编写的一个简单 Web服务器
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3