代码语言
.
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日志,寻找type==1的日志,写到数据库里.
作者:
gogo
/ 发布于
2014/1/17
/
742
扫描apache日志,寻找type==1的日志,写到数据库里.
#! /usr/bin/perl -w useDBI; useBenchmark; $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_timeeq$time_string){ $time_flag=0; nextLINEif$time_flag==0; } } if($time_flag==0){ if($line=~ qr/type=([0||1||2||3])/) { $type=$1; } nextLINEif$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"); printOUTFILE ($date_time); printf"** %s\n\n", timestr(timediff(new Benchmark,$startime)); $dbh->disconnect();
试试其它关键字
同语言下
.
获取本机所有IP和设备的绑定情况
.
生成隨機密碼
.
取文件的最后修改时间
.
获取本机所有IP和设备的绑定情况
.
将perl脚本变成乱糟糟的一团
.
从 HTML网页中解析出链接
.
使用 HTTP::Request 请求 URL 并将响应保存到文件
.
使用指定的User-Agent抓取网页
.
使用 Net::SMTP发送邮件
.
编写的一个简单 Web服务器
可能有用的
.
获取本机所有IP和设备的绑定情况
.
生成隨機密碼
.
取文件的最后修改时间
.
获取本机所有IP和设备的绑定情况
.
将perl脚本变成乱糟糟的一团
.
从 HTML网页中解析出链接
.
使用 HTTP::Request 请求 URL 并将响应保存到文件
.
使用指定的User-Agent抓取网页
.
使用 Net::SMTP发送邮件
.
编写的一个简单 Web服务器
gogo
贡献的其它代码
(
7
)
.
执行Linux安装程序和脚本
.
批量赋予可执行权限
.
通过IMAP接收、处理邮件
.
监控网站的性能和 uptime
.
删除文件
.
扫描apache日志,寻找type==1的日志,写到数据库里.
.
从文件中提取字符串
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3