2013-02-24 4 views
0

Что было бы самым эффективным способом захвата адресата ip (> ip) и «User-Agent:». Я хотел бы захватить эти два значения и выгрузить их в файл с ip первым в строке, за которым следует пользовательский агент. Я хотел бы свести к минимуму системные ресурсы. Это будет работать 24x7, периодически промывая журнал.tcpdump заголовок информация grep или awk или sed?

" 1.1.1.1.58477 > 98.139.239.224.80: Flags [P.], cksum 0x2a6c (correct), seq 1:431, ack 1, win 17520, length 430 
E.../[email protected]~...K...b....m.Px9.Iim/.P.Dp*l..GET /images/40eb913b4b20614fad042dc816d412fe_48.jpeg HTTP/1.1^M 
Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5^M 
Referer: http://sports.yahoo.com/news/nascar--scene-at-daytona--was-like-a-war-zone--005423629.html^M 
Accept-Language: en-US^M 
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)^M 
Accept-Encoding: gzip, deflate^M 
Host: socialprofiles.zenfs.com^M 
DNT: 1^M 
Connection: Keep-Alive^M" 

Добавление URL-адреса для хорошо отформатированного исходного результата. docs.google.com/file/d/0B1umMHxdWKkdNzI3anBaemhuOVE/edit?usp=sharing

T 15.127.111.221:64300 -> 198.252.206.16:80 [AP] 
GET /posts/15048809/ivc/29bb?_=1362111021654 HTTP/1.1. 
Host: stackoverflow.com. 
Connection: keep-alive. 
Accept: */*. 
X-Requested-With: XMLHttpRequest. 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko)   Chrome/25.0.1364.97 Safari/537.22. 
Referer: http://stackoverflow.com/questions/15048809/tcpdump-header-info-grep-or-awk- or-sed. 
Accept-Encoding: gzip,deflate,sdch. 
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6. 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3. 
Cookie: __qca=P0-1081552782-122603326; sgt=id=9 
+0

Я попытался отредактировать файл журнала, и я не уверен, если я получил это право. Пожалуйста, отредактируйте (http://stackoverflow.com/posts/15048809/edit) свой вопрос, чтобы исправить его. Кроме того, добавление некоторых выходных данных значительно улучшает ясность. – Steve

+0

Вот необработанный журнал. Его tcpdump и застегнул его 3mb всего его 11mb. https://docs.google.com/file/d/0B1umMHxdWKkdYWtibmgyNkE3Um8/edit?usp=sharing – sectech

+0

Спасибо, кстати! – sectech

ответ

2

Это поможет ответить на ваш вопрос точно, если включить в описание проблемы точный образец вашей требуемой мощности. До тех пор, вот общая идея, как действовать.

EDIT

$ awk '/Flags/{sub(/.80:/, "", $4);printf $4"\t"} /User-Agent/{sub(/^[^:][^:]*:/,"");sub(/\.80/,"", $4); print}' logTest 

выход

98.139.239.224 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)^M 

Я оставляю поле согласованного в $ 4, как это то, что соответствует моему исполнению ваших данных образцов, за ваши комментарии, вам может легко изменить его до 3 долларов.

Примечание. Я использовал вкладку в качестве разделителя полей между IP и User-Agent.

IHTH.

+0

Привет, я получаю «awk: строка 1: константа строки runaway»); print} ... », когда я пытаюсь запустить вашу команду awk. Проблема Im имеет попытку получить только IP-адрес назначения с линией пользовательского агента, разделенной из tcpdump и в новый файл. Помогает ли это? – sectech

+0

1. Является ли мой образец вывода похожим на то, что вы хотите? Я выбрал правильные данные? Будет ли у файла всегда интересный IP-адрес на линии с помощью флага и будет ли это 4-й элемент на линии? 2. Какую ОС вы используете? Если не linux, попробуйте использовать 'nawk' вместо' awk'. Удачи. – shellter

+0

1. Im получает сообщение об ошибке, читает мой ответ выше 2. Использование debian squeeze. Awk отлично работает в других моих целях. – sectech