ar4i
Окт. 20, 2013 13:56:45
Здравствуйте, у меня на сервере под управлением freebsd стоит апи, к которому обращаются разнообразные клиенты. Я хотел бы с помощью питона как-то следить за портом, который уже занят апи, и получать данные о подключившихся клиентах. Минимум мне нужно получить ip адресс обратившегося, а в идеале еще и url, к какому обратились.
Первым делом я подумал о сокет-сервере, но он мне не подходит, т.к. порт уже занят апи. Подскажите, пожалуйста, в какую сторону мне копать и как лучше решить поставленную задачу.
JOHN_16
Окт. 20, 2013 14:53:20
ar4i
на Линуксе есть команда lsof -i. Во фряхе у нее вроде бы синтаксис другой. Идея в том что бы через subprocess вызывать нужную цепочку команд и далее то что вам нужно с ними делать
ar4i
Окт. 20, 2013 19:01:48
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)