Страница 1 из 1
Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-27 17:17:01
Ksadoo
Есть скрипт, который вытягивает из логов сквида 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
Как его изменить так, что б в один столбец базы вносились только название домена который посещался, а во второй все поддомена в этом домене.
Помогите пожалуйста!
Re: Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-28 10:41:50
Гость
не имел дела с mysql/squid, без понятия как там логи выглядят и какие ограничения на таблицы. Но что ты подразумеваешь под "все поддомена"? Ты хочешь в каждую ячейку вносить копию всех поддоменов кои встречались в логе или ссылку на другую таблицу?
ps, тебя будет легче понять, если ты предоставишь пример данных на ввод и пример данных на вывод.
Re: Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-28 10:43:47
ADRE
дописать скрипт чтоб делил строку с урлом после /
Re: Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-28 11:58:40
Ksadoo
Ок, вот пример лога сквида:
Код: Выделить всё
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 мне нужно дописать скрипт, который делил бы строку после "/"; проблема в том, что я не знаю как это сделать, вот и обратился за помощью!
Буду очень благодарен хотя бы за приблизительное обьяснение того, как такое можно сделать.

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
Re: Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-28 22:15:04
buryanov
можно сделать это средствами мускула
если вам нужно выкинуть всё, что после имени сервера - то делается так:
Код: Выделить всё
SUBSTRING_INDEX('http://www.google.com.ua/search?/123','/',3);
в результате вы получите
вместо '
http://www.google.com.ua/search?/123' поставляете свою переменную № поля
Re: Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-29 2:19:30
Burner
а не проще поставить обычную парсилку - sarg, free-sa?
Re: Нужна помощь в корректировке скрипта!
Добавлено: 2010-05-31 12:13:23
Ksadoo
Всем огромное СПАСИБО! Воспользовался вариантом со "split"!