LINUX.ORG.RU
решено ФорумAdmin

Парсить лог подключений

 , ,


1

1

Здравствуйте, уважаемые форумчане. Есть лог файл такого вида:

pos 0000438648
-1 1413864452 1413864452 173.194.115.255   443     0  17                 6702    43     2     3                    0
-1 1413864452 1413864452 173.194.115.255   443     0   6                 4685    43     2     3                    0
 1 1413864452 1413864452 173.194.115.255     0   443  17                 5477    43     2     3                    0
 1 1413864452 1413864452 173.194.115.255     0   443   6                 1064    43     2     3                    0
 1 1413864438 1413864469 173.194.071.095     0   443  17                 5344    43     2     3                    0
-1 1413864438 1413864438 173.194.071.095   443     0  17                33173    43     2     3                    0
 1 1413864438 1413864469 074.125.232.108     0   443  17                16524    43     2     3                    0
-1 1413864438 1413864438 074.125.232.108   443     0  17                46774    43     2     3                    0
-1 1413864362 1413864362 217.073.200.219   443     0   6                 7496    43     2     3                    0
 1 1413864362 1413864362 217.073.200.219     0   443   6                 2381    43     2     3                    0
 1 1413864377 1413864361 091.216.195.003     0   443   6                19340    43     2     3                    0
-1 1413864377 1413864361 091.216.195.003   443     0   6                79512    43     2     3                    0
-1 1413864362 1413864452 093.184.221.133   443     0   6              1364742    43     2     3                    0
 1 1413864362 1413864452 093.184.221.133     0   443   6                36444    43     2     3                    0
-1 1413864378 1413864389 173.194.029.147    80     0   6               104137    43     2     3                    0
 1 1413864377 1413864388 173.194.029.147     0    80   6                 2825    43     2     3                    0
 1 1413864360 1413864447 074.125.110.050     0    80  17               456778    43     2     3                    0
 1 1413864360 1413864360 074.125.110.050     0    80   6                  344    43     2     3                    0
-1 1413864360 1413864447 074.125.110.050    80     0  17             19441354    43     2     3                    0

описание столбцов:
1 направление движения сессии(-1 вход/ 1 исход)
2 начало сессии
3 конец сессии
4 ip
5 source port
6 dest port
7 номер протокола (6 tcp/ 17 udp)
Необходимо выяснить, на какие сайты осуществлялись соединения в указанный промежуток времени.
Буду рад любой помощи.
Заранее благодарю.


#!/bin/sh
export t1=`date --date "$1" +"%s"`
export t2=`date --date "$2" +"%s"`
grep ^-1 "$3" | awk 'BEGIN { t1 = '$t1'; t2='$t2'; } { if (t1 >= $2 && t1 <= $3 || t2 >= $2 && t2 <= $3) { print $4 } }'

Использование: ./1.sh «2014-01-01 00:00:00» «2015-01-01 23:59:59» filename.log

Для исходящих заменить grep ^-1 на grep ^1.

anonymous ()
Ответ на: комментарий от zolden

можно хоть timestamp'ами, но удобнее в человекопонятном виде

fon ()
Ответ на: комментарий от anonymous

Ну еще | sort -u в конец дописать.

anonymous ()
Ответ на: комментарий от anonymous

Условие там, конечно, неверное, но ты понял принцип.

anonymous ()
Ответ на: комментарий от anonymous

Большое спасибо. А можете еще подсказать, как прогнать, полученный список ip через whois и получить netname: и descr:

fon ()
Ответ на: комментарий от anonymous

окончательный вариант

#!/bin/sh
export t1=`date --date "$1" +"%s"`
export t2=`date --date "$2" +"%s"`
grep ^-1 "$3" | awk '{ t1 = '$t1'; t2='$t2'} { if ((t1 <= $3 && t2>= $3)||(t1 <= $2 && t2>= $2)) {  print t1, $2, $3, t2, $4 } }'
логика условия: выбирать запись, если в указанный интервал попадает конец сессии или начало сессии
в выводе timestamp для дебага
спасибо за помощь

fon ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.