【发布时间】:2011-04-16 14:09:57
【问题描述】:
我在一台服务器上的数据进入一个不断增长的日志文件。我需要跟踪该日志并 grep 一些信息,然后将其发送到另一台服务器以供 php 插入数据库。不能允许拥有日志的计算机访问数据库。到目前为止我已经尝试过了,但是我在 bash 命令上的语法是错误的,我不知道这是这样做的方法还是有更好的方法? Netcat 是另一个想法……
monitor.sh
#!/bin/sh
tail -f /usr/local/log/thelog.log | grep -B1 "ABC=" > /usr/local/log/output.log;
while inotifywait -e modify /usr/local/log/output.log; do
sleep 10;
php /usr/bin/send.php;
done
send.php
<?php
//extract data from the post
//extract($_POST);
//set POST variables
$data = 'tail -n 3 /usr/local/log/output.log';
$url = 'http://www.blahblah.com/logtodb.php';
$data = str_replace("A", "", $data);
$data = str_replace("B=", "", $data);
$data = str_replace("C=", "", $data);
$data = str_replace("D=", "", $data);
$fields = array(
'data'=>urlencode($data)d,
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
A>
logtodb.php 读取帖子
【问题讨论】:
-
有一些您可能感兴趣的实用工具:logster 和 logtail。