[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: экспорт.php
Undertaker
Доброго времени суток.
Есть лог-файл

(re0) post.ru at Jan 11 04:00:03 - Jan 11 05:00:02
Summary: 4229326 data bytes, 5744214 all bytes, 262 records
From Port To Port Proto Data All
192.168.240.254 pop3 192.168.240.250 client tcp 779382 826278
192.168.240.254 ssh 192.168.240.250 client tcp 240876 381636
192.168.240.254 pop3 192.168.240.38 client tcp 246414 255582
dnl-eu32.dnl.kaspe http 192.168.240.5 client tcp 226002 234218
192.168.240.254 pop3 192.168.240.98 client tcp 172931 179779
192.168.240.250 client 192.168.240.254 ssh tcp 1628 142188
195.122.169.15 65011 192.168.240.88 client tcp 113307 116955

Нужно экспортировать файл в базу данных, но не ручками, а php-языком, как бы это реализовать?



Спустя 2 минуты, 9 секунд (6.02.2012 - 07:23) Игорь_Vasinsky написал(а):
ну для начала разбить лог на логические строки, потом строки разбить на состовляющие, потом вносить в БД

но логичней простой парсер лога написать и выводить через него.

Спустя 12 минут, 40 секунд (6.02.2012 - 07:36) Каретный написал(а):
на скюид лог похож.
в цикле explode(хотя тебе возможно регулярка потребуеться из за tcp ip из за пробела) потом в итерации в базу по индексному массиву вставляешь как надо значения..


ну и конечно же файлы и еще раз файлы. копай в сторону чтения, там все просто.

Спустя 5 минут, 20 секунд (6.02.2012 - 07:41) XCross написал(а):
<?php

$FileContent = file_get_contents('path_to_log');
$FileContent = explode("\r\n", $FileContent);


for($i=0; isset($FileContent[$i]); $i++){

$Arr = explode(' ', $FileContent[$i]);

# From Port To Port Protocol Data All
# 0 1 2 3 4 5 6


mysql_query("INSERT INTO `table` SET

`from` = '"
.$Arr[0]."',
`port` = '"
.$Arr[1]."',
`to` = '"
.$Arr[2]."'"

);

}

?>

Спустя 6 минут, 43 секунды (6.02.2012 - 07:48) Каретный написал(а):
чей лог?
у меня где-то быль костыль учета статистики под squid, если что найду кину.

Спустя 1 час, 32 минуты, 41 секунда (6.02.2012 - 09:21) Undertaker написал(а):
Этот лог как то упорядочен не по php-шному везде разное количество пробелов.
А как заставить его проверять если значение пустое то переходить к следующей строке, ну или просто что бы он брал первое значение и последнее
Вот пример скрипта который у меня был:

$f = fopen(('путь', 'r');
$db=mysql_connect($sdd_db_host, $sdd_db_user, $sdd_db_pass) or die("Невозможно подключиться к серверу");
@mysql_select_db('sprav') or die("Ошибка выбора БД");
@mysql_query("SET NAMES cp1251");
$data = fgetcsv($f, 1000, ' ');
while(!feof($f)){
$data = fgetcsv($f, 1000, ' ');

$data[0] = (string) $data[0];
$data[0] = addslashes(trim($data[0]));
$data[1] = addslashes(trim($data[1]));
$data[2] = addslashes(trim($data[2]));
$data[3] = addslashes(trim($data[3]));
$data[4] = addslashes(trim($data[4]));
$data[5] = addslashes(trim($data[5]));
$data[6] = addslashes(trim($data[6]));
$data[7] = addslashes(trim($data[7]));



$query = "INSERT INTO sprav.sprav * VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]')";

mysql_query($query, $db) or die ("Данные не добавлены");

}

Спустя 2 минуты, 18 секунд (6.02.2012 - 09:23) Undertaker написал(а):
XCross
спасибо, но он как то худшее работает


_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.