Нужна помощь в корректировке скрипта!

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Ksadoo
рядовой
Сообщения: 33
Зарегистрирован: 2010-04-20 8:54:06
Откуда: Киев
Контактная информация:

Нужна помощь в корректировке скрипта!

Непрочитанное сообщение Ksadoo » 2010-05-27 17:17:01

Есть скрипт, который вытягивает из логов сквида ip, время, url... и заносит их в MySQL:

Код: Выделить всё

#!/bin/bash

cp /usr/local/squid/logs/access.log /tmp/squidforparse.log
>/usr/local/squid/logs/access.log
awk '{gsub (/PPPP%5C/, "")} {print "INSERT INTO squid (name,ip,bytes,link,trans,time) \
VALUES (\""$8"\",\""$3"\","$5",\""$7"\",\""$9"\",from_unixtime("$1"));"};' \
< /tmp/squidforparse.log | mysql -D traffics -u root --password=root
rm -f /tmp/squidforparse.log

Как его изменить так, что б в один столбец базы вносились только название домена который посещался, а во второй все поддомена в этом домене.
Помогите пожалуйста!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение Гость » 2010-05-28 10:41:50

не имел дела с mysql/squid, без понятия как там логи выглядят и какие ограничения на таблицы. Но что ты подразумеваешь под "все поддомена"? Ты хочешь в каждую ячейку вносить копию всех поддоменов кои встречались в логе или ссылку на другую таблицу?

ps, тебя будет легче понять, если ты предоставишь пример данных на ввод и пример данных на вывод.

Аватара пользователя
ADRE
майор
Сообщения: 2645
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение ADRE » 2010-05-28 10:43:47

дописать скрипт чтоб делил строку с урлом после /
//del

Ksadoo
рядовой
Сообщения: 33
Зарегистрирован: 2010-04-20 8:54:06
Откуда: Киев
Контактная информация:

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение Ksadoo » 2010-05-28 11:58:40

Ок, вот пример лога сквида:

Код: Выделить всё

1275035155.097  147 192.168.200.2 TCP_MISS/200 6733 GET http://www.google.com.ua/ PPPP%5Cksadoo DIRECT/74.125.87.99 text/html
1275035228.118  234 192.168.200.2 TCP_MISS/200 14184 GET http://www.google.com.ua/search? PPPP%5Cksadoo DIRECT/74.125.87.99 text/html
.....
Сейчас работает так:

Код: Выделить всё

   1     |          2        |               3                                       
ksadoo   |   192.168.200.2   |   http://www.google.com
ksadoo   |   192.168.200.2   |   http://www.google.com/search?        
 

Нужно добавить 4-е поле и в него вносить только поддомена домена google и др. Тоесть:

Код: Выделить всё

  1      |          2        |               3           |        4               
ksadoo   |   192.168.200.2   |   http://www.google.com   |       --
ksadoo   |   192.168.200.2   |   http://www.google.com   |  http://www.google.com.ua/search?
ksadoo   |   192.168.200.2   |   http://www.google.com   |  http://www.google.com.ua/search?/1234/
ksadoo   |   192.168.200.2   |   http://www.bigmir.ua    |       --
ksadoo   |   192.168.200.2   |   http://www.bigmir.ua    |  http://www.bigmir.ua/video/
4-е поле добавить не проблема, а вот как сделать такое распределение не знаю. Как сказал ADRE мне нужно дописать скрипт, который делил бы строку после "/"; проблема в том, что я не знаю как это сделать, вот и обратился за помощью!
Буду очень благодарен хотя бы за приблизительное обьяснение того, как такое можно сделать. :smile:

Гость
проходил мимо

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение Гость » 2010-05-28 17:32:04

разбей с помощью функции split()

Код: Выделить всё

$ awk '{ gsub(/PPPP%5C/, ""); split($7,a,"/"); print a[3] }' твой_лог.txt
www.google.com.ua
www.google.com.ua
сам сможешь воткнуть в нужное место?

кроме split() можно также менять значения FS, но тогда результат предсказать сложнее

Код: Выделить всё

awk '{ gsub(/PPPP%5C/, ""); FS="/"; print $4  }' твой_лог.txt
www.google.com.ua
www.google.com.ua

$ awk '{ gsub(/PPPP%5C/, ""); print $4; FS="/" }' твой_лог.txt
TCP_MISS/200
www.google.com.ua

Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение buryanov » 2010-05-28 22:15:04

можно сделать это средствами мускула
если вам нужно выкинуть всё, что после имени сервера - то делается так:

Код: Выделить всё

SUBSTRING_INDEX('http://www.google.com.ua/search?/123','/',3);
в результате вы получите

Код: Выделить всё

http://www.google.com.ua
вместо 'http://www.google.com.ua/search?/123' поставляете свою переменную № поля
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение Burner » 2010-05-29 2:19:30

а не проще поставить обычную парсилку - sarg, free-sa?

Ksadoo
рядовой
Сообщения: 33
Зарегистрирован: 2010-04-20 8:54:06
Откуда: Киев
Контактная информация:

Re: Нужна помощь в корректировке скрипта!

Непрочитанное сообщение Ksadoo » 2010-05-31 12:13:23

Всем огромное СПАСИБО! Воспользовался вариантом со "split"!