Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2013 13:56:45

ar4i
Зарегистрирован: 2013-10-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Отслеживание обращений к конкретному порту

Здравствуйте, у меня на сервере под управлением freebsd стоит апи, к которому обращаются разнообразные клиенты. Я хотел бы с помощью питона как-то следить за портом, который уже занят апи, и получать данные о подключившихся клиентах. Минимум мне нужно получить ip адресс обратившегося, а в идеале еще и url, к какому обратились.
Первым делом я подумал о сокет-сервере, но он мне не подходит, т.к. порт уже занят апи. Подскажите, пожалуйста, в какую сторону мне копать и как лучше решить поставленную задачу.

Офлайн

#2 Окт. 20, 2013 14:53:20

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Отслеживание обращений к конкретному порту

ar4i
на Линуксе есть команда lsof -i. Во фряхе у нее вроде бы синтаксис другой. Идея в том что бы через subprocess вызывать нужную цепочку команд и далее то что вам нужно с ними делать



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Окт. 20, 2013 19:01:48

ar4i
Зарегистрирован: 2013-10-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Отслеживание обращений к конкретному порту

JOHN_16, спасибо большое, этот способ мне вполне подходит!
Кому интересно, то у утилиты lsof синтаксис везде один, только на фряхе она не стоит по умолчанию, нужно ставить.
Для получения колонки NAME я использую следующий код:

import subprocess
import re
NAME_PATTERN = re.compile(r'TCP (.*) ')
raw_data = subprocess.check_output("lsof -i tcp:80", shell=True)
data = NAME_PATTERN.findall(raw_data)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version