ํ๋ซํผ
๋ฒ๊ทธ ์ค๋ช
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'
๊ฐ์ฌ.
๋ํ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ์ ์์ต๋๋ค.
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'
์ ์์น๊ฐ ํต์ฌ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค .__
๊ณ ๋ง์ ~~~
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ ์๋ง ์. =)
namedtuple ๋์ ํํ์ด ๋ณด์ด๋ฉด ๋ฒ๊ทธ์ ๋๋ค.