Bir günlüğüne verileri okumak gerekir ...

0 Cevap php

Ben sürekli büyüyen bir log dosyasına girdiği tek bir sunucu üzerinde veri var. Ben log ve grep bazı bilgiler ve daha sonra bir veritabanına eklemek için php için başka bir sunucuya bu göndermek kuyruk gerekir. Günlüğü vardır bilgisayar veritabanına erişim izin olamaz. Ben şimdiye kadar bu çalıştı ama bash komutunun benim sözdizimi yanlış ve bunu yapmak için yolu ise ya daha iyi bir yolu var olurdu ben çözemiyorum? Netcat başka bir düşünce oldu ...

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 mesajı okur

0 Cevap