vak
Март 29, 2011 11:45:23
Подскажите плиз какой (или какие) модуль нужно использовать, если требуется реализовать следующие функции:
1.Определять наличие или отсутствие конкретного открытого порта (tcp/utp)
2.Определить номер процесса, который открыл порт
3.Размер потребляемой памяти по номеру процесса
Операционная система: Linux/Debian
agalen
Март 29, 2011 14:50:17
o7412369815963
Март 29, 2011 17:14:06
я бы консольные утилиты заюзал, например netstat, ps
vak
Март 30, 2011 05:03:16
o7412369815963
я бы консольные утилиты заюзал, например netstat, ps
Возможно так и придется поступить…
vak
Март 30, 2011 05:04:26
agalen
Попробуй psutil: http://code.google.com/p/psutil/
Не нашел в нем возможность проверять открыт конкретный tcp порт или нет. Может недоглядел?
Андрей Светлов
Март 30, 2011 05:16:44
открытость порта проверяется успешным socket.bind на него с последующим закрытием сокета.
vak
Март 30, 2011 06:41:19
Андрей Светлов
открытость порта проверяется успешным socket.bind на него с последующим закрытием сокета.
Да, вроде получается.
Осталось подобрать решение для определения сколько процесс использует памяти.
Интересно, имеется ли возможность определить номер процесса по номеру открытого им порта?
Андрей Светлов
Март 30, 2011 07:27:22
>>> import psutil
>>> import os
>>> p = psutil.Process(os.getpid())
>>> p.get_memory_info()
(16719872, 71667712)
vak
Март 30, 2011 07:32:16
Андрей Светлов
>>> import psutil
>>> import os
>>> p = psutil.Process(os.getpid())
>>> p.get_memory_info()
(16719872, 71667712)
А без psutil можно? Проблемы при установке psutil возникли (32-x -> 64-x) , может конечно ерунда - не разбирался.
Андрей Светлов
Март 30, 2011 07:47:21
Все можно. Открываете исходники psutil и копируете оттуда код в свой велосипед.
У меня проблем не было как на 32 так и на 64 битах.