Psutil: [Win10] psutil.net_connections๋Š” ํ˜ผํ•ฉ ๋œ ๊ฐœ์ฒด ์œ ํ˜• (namedtuple ๋ฐ tuple)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 05์›” 21์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: giampaolo/psutil

ํ”Œ๋žซํผ

  • sys.getwindowsversion (major = 6, minor = 2, build = 9200, platform = 2, service_pack = '')
  • '2.7.15 (v2.7.15 : ca079a3ea3, 2018 ๋…„ 4 ์›” 30 ์ผ, 16:30:26) [MSC v.1500 64 ๋น„ํŠธ (AMD64)]'
  • ๋ฒ„์ „ : 5.6.2

๋ฒ„๊ทธ ์„ค๋ช…
psutil.net_connections๋Š” ํ˜ผํ•ฉ ๋œ ๊ฐœ์ฒด ์œ ํ˜• (namedtuple ๋ฐ tuple)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํŠœํ”Œ ๋Œ€์‹  namedtuple์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜ํ™˜ ์œ ํ˜•์ด๊ฑฐ๋‚˜ ํ˜ผํ•ฉ ์œ ํ˜•์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

print [sconn.raddr for sconn in sconn_list if sconn.raddr.port == 993 and sconn.status == 'ESTABLISHED']
import psutil

sconn_list = psutil.net_connections(kind='tcp')

print sconn_list[0].raddr.port
print [type(sconn.raddr) for sconn in sconn_list]
print [sconn.raddr for sconn in sconn_list if sconn.raddr.port == 993 and sconn.status == 'ESTABLISHED']

์‹œํ—˜ ๊ฒฐ๊ณผ

Traceback (most recent call last):
  File "C:/Users/Guodong/PycharmProjects/LinuxBashShellScriptForOps/functions/net/tcp/port/check-port-connection.py", line 33, in <module>
    print [sconn.raddr for sconn in sconn_list if sconn.raddr.port == 993 and sconn.status == 'ESTABLISHED']
AttributeError: 'tuple' object has no attribute 'port'

๊ฐ์‚ฌ.

bug windows

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ž ์‹œ๋งŒ ์š”. =)
namedtuple ๋Œ€์‹  ํŠœํ”Œ์ด ๋ณด์ด๋ฉด ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import psutil
from psutil._common import addr  # addr = namedtuple('addr', ['ip', 'port'])

sconn_list = psutil.net_connections(kind='tcp')

print sconn_list[0].raddr.port
print [sconn.raddr for sconn in sconn_list if
       isinstance(sconn.raddr, addr) and sconn.raddr.port == 993 and sconn.status == 'ESTABLISHED']

์Œ ... ์ด๊ฑฐ ์ด์ƒํ•ด ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ณด๋Š” ๊ฒƒ์„ ์ •๋‹นํ™”ํ•˜๋Š” ์ฝ”๋“œ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. pdb ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ๋””๋ฒ„๊น…์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ—ท๊ฐˆ ๋ฆฌ๊ฒŒํ•ด์„œ ๋ฏธ์•ˆ ํ•ด์š” ์•„๋งˆ ์ •์ƒ์ผ์ง€๋„ ๋ชฐ๋ผ์š” psutil.net_connections(kind='tcp') ํ•ญ๋ชฉ์€ ๋‘ ๊ฐ€์ง€ python ๊ฐ์ฒด ์œ ํ˜• (๊ณผ). ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import psutil

sconn_list = psutil.net_connections(kind='tcp')

for sconn in sconn_list:
    print(type(sconn.raddr))
    print(sconn)

๋‹ค์‹œ ํ™•์ธํ•œ ํ›„ ๋‚ด ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค .'sconn.status = 'LISTEN' '์ผ ๋•Œ๋งŒ ํŠœํ”Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ;)

์ž ์‹œ๋งŒ ์š”. =)
namedtuple ๋Œ€์‹  ํŠœํ”Œ์ด ๋ณด์ด๋ฉด ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค.

:), ์ข‹์•„์š”, ๋‹น์‹ ์€ ๋„ˆ๋ฌด ์นœ์ ˆํ•ด์„œ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ์ฝ”๋“œ :

my_sconn_list = [sconn for sconn in sconn_list if sconn.status == 'ESTABLISHED' and sconn.raddr.port == port]

์ด์ „ ์ฝ”๋“œ :

from psutil._common import addr
my_sconn_list = [sconn for sconn in sconn_list if
                 isinstance(sconn.raddr,
                            addr) and sconn.raddr.port == port and sconn.status == 'ESTABLISHED']

__ sconn.status == 'ESTABLISHED' ์˜ ์œ„์น˜๊ฐ€ ํ•ต์‹ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค .__

๊ณ ๋งˆ์›Œ ~~~

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰